То, что "изменения не будут сохраняться в каждом экземпляре", фактически означает в 50-cloud-init.yaml
В недавнем Ubuntu netplan является стандартным способом настройки сетевых адаптеров. Мне нужен статический IP на одном из моих, и есть несколько советов, как это сделать. Некоторые указывают вам на редактирование 50-cloud-init.yaml. Но у этого файла есть зловещее предупреждение:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
Один ответ на askubuntu ссылается на это и заставляет пользователя делать это. (Обратите внимание, что для средства визуализации установлено значение networkd.)
Какой подход правильный? Они оба работают?
Самое сбивающее с толку, что значит "сохраняться через экземпляр"? Настройки сохраняются очень хорошо даже после перезагрузки. Когда я ожидал бы потерять настройки в 50-cloud-init.yaml?
0 ответов
Предупреждение "не для экземпляра" означает, что если вы введете изменения в файл yaml в образе, который все еще должен выполнить свой первый запуск cloud-init (при загрузке), изменения будут перезаписаны cloud-init.
Cloud-init используется для конфигурирования при первой загрузке. Для этого он изменяет файлы при первой (и, возможно, даже при последующей) загрузке. Файл 50...yaml является одним из них.
После первого запуска cloud-init для образа он больше не будет запускать эти изменения.
Таким образом, в предупреждении рекомендуется не изменять файл в необработанных, неиспользуемых системных образах для контейнеров и виртуальных машин и тому подобного.
Кстати, команда "cloud-init clean" вернет статус cloud-init в состояние "никогда не запускаться раньше", и, следовательно, восстановит файл 50....yaml.
Изменения в /etc/netplan/50-cloud-init.yaml сохраняются при перезагрузках, но не при резервном копировании экземпляра и восстановлении его на новом (даже если резервное копирование было выполнено после перезагрузки).
Я предполагаю, что решение, описанное в Convert /etc/network/interfaces to netplan, делает его постоянным для всех экземпляров, но я решил, что мне все равно придется обновлять MAC-адрес в каждом экземпляре...
Итак, я закончил писать небольшой скрипт, который:
- добавляет мой конфиг в конце /etc/netplan/50-cloud-init.yaml
- работает
sudo netplan apply
Я просто запускаю этот скрипт один раз после каждого создания экземпляра и все...