Cloud Init on Google Compute Engine (GCE) с Centos7 / 8 не работает должным образом при первой загрузке, но нормально после любой другой перезагрузки - PullRequest
0 голосов
/ 11 июля 2020

У нас есть образ CentOS 8 (также пробовал 7), и я добавляю некоторую конфигурацию для работы в качестве маршрутизатора.

Проблема в том, что по какой-то причине при первом создании экземпляра облако init не читает конфигурацию сети, которую мы передаем с использованием метаданных пользовательских данных

#cloud-config
network
  version: 1
  etc...

Мы настраиваем eth1 для использования dhcp и получаем cloud-init для управления им, а также добавляем маршрут.

Прекрасно работает каждый раз после начальной загрузки (и остановки> запуска снова).

Мне кажется, что cloud-init не знает конфигурации, но когда я go в машине и сделайте cloud-init query userdata, я могу видеть данные, и даже если я сделаю cloud-init clean && cloud-init init, он ничего не сделает. Те же команды работают нормально, если компьютер был перезагружен

1 Ответ

0 голосов
/ 27 июля 2020

Попробуйте запустить cloud-init analyze show оба раза (создание экземпляра и последовательная перезагрузка) и проверьте, нет ли различий.

К сожалению, облачные провайдеры как бы злоупотребляют возможностями cloud-init, но не полностью. cloud-init позволяет настраивать конфигурацию, предоставленную поставщиком / пользователем (кто что отменяет), изменять порядок этапов загрузки и т. Д. c. Это делается в основном потому, что разные облачные провайдеры нуждаются в сети / предоставлении / хранилище в разное время. Например, AWS подключает хранилище после сети (только EBS), Azure предоставляет виртуальную машину только после подключения хранилища и изначально предоставляется как NTFS (они действительно форматируют диск, если вам нужно что-то еще), et c.

Эти махинации, хотя и понятные (инфраструктура центра обработки данных определяет доступность пользователей), делают документацию cloud-init просто предложением для изучения пользователем.

По моему опыту, Azure является наиболее близким к оригинальная реализация. Возможно, они еще не научились использовать потенциал в свою пользу.

Мое общее предложение для любой настройки экземпляра (почти всегда работает) - написать сценарий с write_files и выполнить их с bootcmd/runcmd , потому что они выполняются на этапе final и обеспечивают наилучшую возможность переопределения. Отредактируйте hosts, измените правила брандмауэра - большая часть работы не требует перезагрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...