Tenía una pregunta un poco más específica que el OP, pero me llevó un tiempo averiguar qué estaba haciendo mal. Pensé que lo publicaría aquí para ayudar a cualquier otra persona a quedar igualmente perpleja.
Quería configuraciones de red estáticas para un contenedor LXC / LXD Ubuntu 16.04 alojado en Ubuntu 16.04. Comencé probando lo que escribió Stéphane pero no estaba funcionando. Todo lo que terminé con fue el contenedor predeterminado de intento de DHCP con un enlace IPv6 local, ya que no hay ningún servidor DHCP en mi configuración.
Mi YAML inicial se parecía (algo) al siguiente (tomado de los documentos de inicio de la nube ).
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
Y estaba cargando esto user.user-data
como se describe anteriormente.
lxc config set CONTAINER user.user-data - < CONTAINER.cloud-init-config.yml
No fue hasta que encontré la documentación de Stéphane en la fuente LXC / LXD que me di cuenta de que necesitaba cargar ese valor user.network-config
.
Así que mi YAML final se veía (algo) así.
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
Luego cargué esto en su user.network-config
lugar.
lxc config set CONTAINER user.network-config - < CONTAINER.network-config.yaml
Parece que tendré que mantener dos archivos diferentes por contenedor: uno para cargar la configuración de red user.network-config
; y otra para cargar otra configuración a user.user-data
menos que pueda encontrar una manera de usar un solo archivo para todo.
Otro problema que encontré que no era obvio para mí fue intentar configurar los componentes que no son de red automáticamente.
lxc config set CONTAINER user.user-data - < CONTAINER.user-data.yaml
El siguiente YAML aplicado con el comando anterior (a pesar de parecer correcto usando lxc config show CONTAINER
) no creó nada dentro de mi contenedor.
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar
La pista enterrada en los Formatos de entrada de datos del usuario, elemento 5: Datos de configuración de la nube se lee:
comienza con "#cloud-config"
o "Content-Type: text/cloud-config"
Este contenido son datos de "configuración de nube". Vea los ejemplos para un ejemplo comentado de formatos de configuración compatibles.
No creo que esta documentación sea muy clara. No pude hacer que nada funcionara con el formulario "Content-Type: text / cloud-config" pero encontré que si pones #cloud-config
en la primera línea, se analiza el YAML. Solo puedo suponer que algo no está del todo bien, ya sea mi comprensión o la programación de alguien. Para mí no tiene sentido que YAML haya cargado explícitamente, ya que el valor de la clave user.user-data
debe usarse como otra cosa que no sean datos de configuración de la nube. ¿Por qué si alguien haría eso si no estaba destinado a ser la configuración de la nube, y por lo tanto ¿por qué un comentario (que ni siquiera utilizar la sintaxis tinglado normal) se requiere ?
Entonces, sin sentido, la sintaxis que funcionó user.user-data
es:
#cloud-config
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar