Я был на бесчисленных сайтах, включая этот, пытаясь понять, как заставить LXD запускать облачную конфигурацию, когда я запускаю свой контейнер LXD. В некоторых местах рекомендуют настроить профиль (не работает). Другие рекомендуют перенаправить файл YAML в команду lxc (не сработало), а другие рекомендуют использовать команду --config
option и передать файл таким образом (не сработало). В некоторых местах говорят, что я должен добавить #cloud-config
к моему конфигу, другие не заморачиваются. Некоторые даже рекомендуют использовать файл XML. Очевидно, мне не хватает какой-то важной части информации, которую все остальные делают по умолчанию, но я не могу понять, что это такое.
Мой обновленный «простой пример», который пытается установить дерево и пытается коснуться /run/cloud-config-did-run:
lxc удалить -f х
кошка << EOF >config.yml
#cloud-config
вывод: {все: '| tee -a /var/log/my-cloud-init-output.log'}
пакет_обновление: правда
package_upgrade: правда
package_reboot_if_required: правда
пакеты:
- дерево
выполнить команду:
- коснитесь /run/cloud-config-did-run
EOF
lxc запускает Ubuntu: x --config=user.user-data="$(cat config.yml)"
спать 5
lxc exec x -- bash -c "ls /run"
lxc exec x -- bash -c "дерево /etc"
Вывод НАПРАВЛЯЕТСЯ на /var/log/my-cloud-init-output.log
, поэтому он обрабатывается, но ничего, кроме вывод
директива работает (в журналах даже не упоминаются какие-либо другие запущенные вещи или какие-либо ошибки - только стандартный материал SSH keygen).
Может отступ неправильный? Или конфиг не в том поддереве? Или не хватает какого-то магического значения? Версия LXD, где это сломано? (У меня версия 4.20). Я занимаюсь этим уже 10 часов, и независимо от того, что я делаю, моя облачная конфигурация полностью игнорируется (ни ошибок, ни журналов, ни записей о том, что что-то работает, ни записей о том, что я когда-либо давал указания делать что-либо, кроме стандартный материал ssh keygen, который, по-видимому, испечен). Может ли кто-нибудь превратить приведенное выше в рабочий пример, который гарантированно запустится, если я просто вставлю его в оболочку?