Передавать IP-адрес в метаданные cloud-init

Я ищу способ передать IP-адрес в метаданные cloud-init. Поэтому, когда мой qcow загружается, ему не нужно ждать 120–180 секунд для загрузки.

В настоящее время я создал обходной путь, добавив информацию об IP-адресе в часть userdata cloud-init. Минус в том, что это занимает некоторое время, потому что пользовательские данные cloud-init выполняются только после загрузки виртуальной машины.

echo -e "
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
\taddress $address
\tnetmask $netmask
\tgateway $gateway
\tdns-nameservers $dnsnameservers
" > /etc/network/interfaces

ifdown eth0; ifup eth0

В настоящее время, чтобы установить имя хоста в метаданных cloud-init, я уже получил эту часть:

cat > $config_dir/meta-data <<-EOF
instance-id: $uuid
hostname: $hostname
local-hostname: $hostname
EOF

Но мне нужно что-то более прочное, более конкретное, потому что документация cloud-init очень расплывчата.

РЕДАКТИРОВАТЬ: Я видел, что это возможно, потому что Openstack может это сделать.


person Jonas Libbrecht    schedule 29.12.2015    source источник


Ответы (1)


Это возможно при использовании следующего формата:

network-interfaces: |
  auto lo
  iface lo inet loopback

  iface eth0 inet static
    address xxx.xxx.xxx.xxx (static ip)
    netmask xxx.xxx.xxx.xxx
    gateway xxx.xxx.xxx.xxx (gateway ip, usually ip address of router)

Вы в основном записываете конфигурацию, которую хотите, чтобы ваши интерфейсы имели, как файл интерфейсов будет выглядеть, пока у вас есть 'network-interfaces: |'

Надеюсь это ответит на твой вопрос!

person codebauss    schedule 29.12.2015
comment
это должно войти в метаданные файла, кстати. см. также cloud-init.readthedocs.io - person frisbee23; 05.05.2017