У мене було дещо більш конкретне запитання, ніж до ОП, але мені знадобилося певний час, щоб розібратися, що я роблю неправильно. Я подумав, що відправлю це тут, щоб допомогти будь-кому іншому потрапити в аналогічний заїзд.
Я хотів статичних налаштувань мережі для контейнера LXC / LXD Ubuntu 16.04, розміщеного на Ubuntu 16.04. Я почав із того, щоб спробувати те, що написав Стефан, але це не спрацювало. Все, в чому я закінчився, - це контейнер, що намагається використовувати DHCP, за замовчуванням з локальним IPv6 посиланням, оскільки в моїй конфігурації DHCP не подається.
Мій початковий YAML виглядав (приблизно) приблизно так (узятий із хмарно-init документів).
network:
version: 1
config:
- type: physical
name: eth0
subnets:
- type: static
address: 192.168.23.14/27
gateway: 192.168.23.1
dns_nameservers:
- 192.168.23.2
- 8.8.8.8
dns_search:
- exemplary.maas
І я завантажував це в user.user-data
описане вище.
lxc config set CONTAINER user.user-data - < CONTAINER.cloud-init-config.yml
Тільки коли я не знайшов документацію Stéphane у джерелі LXC / LXD , я зрозумів, що потрібно завантажити це значення user.network-config
.
Тож моя фінальна YAML виглядала (щось) приблизно так.
version: 1
config:
- type: physical
name: eth0
subnets:
- type: static
address: 192.168.23.14/27
gateway: 192.168.23.1
dns_nameservers:
- 192.168.23.2
- 8.8.8.8
dns_search:
- exemplary.maas
Потім я завантажив це user.network-config
замість цього.
lxc config set CONTAINER user.network-config - < CONTAINER.network-config.yaml
Здається, мені потрібно буде зберігати два різних файли в контейнері: один для мережевих налаштувань для завантаження user.network-config
; і один для іншого конфігурації для завантаження, user.user-data
якщо я не можу знайти спосіб використання одного файлу для всього.
Ще одна проблема, яку я виявив, яка мені зовсім не була очевидною, намагалася автоматично налаштувати немережеві компоненти.
lxc config set CONTAINER user.user-data - < CONTAINER.user-data.yaml
Наступна YAML, застосована з командою, наведеною вище (не дивлячись на правильне використання lxc config show CONTAINER
), не створила нічого в моєму контейнері.
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar
Підказка захована у форматі введення даних користувача, пункт 5: Дані конфігурації хмари :
починається з "#cloud-config"
або "Content-Type: text/cloud-config"
Цей вміст є даними "хмара-конфігурація". Дивіться приклади коментованого прикладу підтримуваних форматів конфігурацій.
Я не вважаю, що ця документація є дуже зрозумілою. Я не міг змусити нічого працювати, використовуючи форму "Content-Type: text / cloud-config", але я виявив, що якщо ви поставите #cloud-config
на перший рядок, YAML розбирається. Я можу лише припустити, що щось не зовсім правильно, чи моє розуміння, чи чиєсь програмування. Для мене немає сенсу, що YAML, який ви явно завантажили як значення ключа, user.user-data
слід використовувати як будь-що, крім даних хмарної конфігурації. Чому б ще хто - небудь зробити, якщо це не повинно було бути конфігурація хмари, і тому чому б коментар (який навіть не використовує звичайний синтаксис притон) потрібно ?
Отже, безглуздя вбік, синтаксис, який працював на user.user-data
це:
#cloud-config
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar