Мой рабочий процесс:
Packer -> Kick off a kickstart build of my system on vCloud
Packer -> Export VM as OVA
Packer -> Upload OVA to s3 bucket in AWS
Packer -> Ask AWS to convert my OVA to AMI
Manual -> Launch AMI instance
Когда я запускаю свой экземпляр AMI, я создаю экземпляр cloud-init
на ранней стадии после запуска сетевой службы.Но cloud-init
не настраивает мои интерфейсы, потому что этот файл присутствует:
/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Этот файл говорит cloud-init
обойти конфигурацию сети, и в результате мой экземпляр недоступен.
Я знаю, что cloud-init
запускается, потому что он устанавливает мое имя хоста в другом файле, который я определил в своем собственном дистрибутивном скрипте.Хост получает свое имя хоста от AWS во время загрузки, поэтому я знаю, что сетевой адаптер работает!Кроме того, я вижу, что он получает IP через DHCP в /var/log/messages
)
Выдержка конфигурации:
system_info:
# This will affect which distro class gets used
distro: cent1
network:
renderers: ['cent1']
По сути, сценарий distro
запущен (cloud-init/cloudinit/distros/cent1.py
)но сценарий renderers
не является (cloud-init/cloudinit/net/cent1.py
).
Я искал базу кода packer
и базу кода cloud-init
, а также мою собственную базу кода, и нигде нет фактическойсоздание или перемещение такого файла присутствует.Единственное место, где упоминается файл - это комментарий в источнике cloud-init
.Следующий комментарий находится в cloudinit/distros/debian.py
(мой экземпляр - CentOS, но этот комментарий объясняет, что делает этот файл):
34 # To disable cloud-init's network configuration capabilities, write a file
35 # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
36 # network: {config: disabled}
Когда я останавливаю свой экземпляр и монтирую его том в другой системе, яможно увидеть 99-disable-network-config.cfg
файл присутствует.Еще более запутанным является то, что в верхней части файла написано:
[root@host ~]# cat /root/drop1-3/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
# Automatically generated by the vm import process
network: {config: disabled}
Когда я выполняю поиск в Google, я вижу другие ссылки на строку # Automatically generated by the vm import process
.
Например, этот пост имеет такую ссылку.
Еще один бит информации.Если я вручную удаляю файл 99-disable-network-config.cfg
в cloud-init
util.py
непосредственно перед тем, как он проверяет файл 99-disable-network-config.cfg
, все работает точно так, как должно - сеть настраивается, и я могу подключиться к своему экземпляру по SSH.Я не помещаю туда файл 99-disable-network-config.cfg
.Я не вижу ничего в источнике packer
, предполагающем, что он помещает туда этот файл.Я не вижу ничего в источнике cloud-init
, предполагающем, что он помещает туда этот файл.
Итак, вопрос в том, откуда этот файл?У меня уже есть обходной путь, но я хотел бы понять причину.Я не смог найти основную причину, по которой этот файл присутствует.
(Извините, это так долгообходной путь.)