Saya memiliki pertanyaan yang sedikit lebih spesifik daripada OP tetapi butuh beberapa saat untuk mencari tahu apa yang saya lakukan salah. Saya pikir saya akan mempostingnya di sini untuk membantu orang lain mengalami kekalahan yang sama.
Saya ingin pengaturan jaringan statis untuk wadah LXC / LXD Ubuntu 16.04 yang dihosting di Ubuntu 16.04. Saya mulai dengan mencoba apa yang ditulis Stéphane tetapi tidak berhasil. Yang saya dapatkan hanyalah wadah percobaan DHCP dengan tautan IPv6 lokal, karena tidak ada DHCP yang dilayani dalam konfigurasi saya.
YAML awal saya tampak (mirip) seperti berikut (diambil dari dokumentasi cloud-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
Dan saya memuat ini user.user-data
seperti yang dijelaskan di atas.
lxc config set CONTAINER user.user-data - < CONTAINER.cloud-init-config.yml
Baru setelah saya menemukan dokumentasi Stéphane di sumber LXC / LXD saya menyadari bahwa saya perlu memuat nilai tersebut user.network-config
.
Jadi YAML terakhir saya terlihat (seperti) seperti ini.
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
Lalu saya memasukkan ini ke dalam user.network-config
gantinya.
lxc config set CONTAINER user.network-config - < CONTAINER.network-config.yaml
Sepertinya saya perlu menyimpan dua file berbeda per wadah: satu untuk memuat pengaturan jaringan user.network-config
; dan satu untuk konfigurasi lain untuk dimuat ke dalam user.user-data
kecuali saya dapat menemukan cara menggunakan satu file untuk semuanya.
Masalah lain yang saya temukan yang tidak jelas bagi saya sama sekali adalah mencoba mengkonfigurasi komponen non-jaringan secara otomatis.
lxc config set CONTAINER user.user-data - < CONTAINER.user-data.yaml
YAML berikut diterapkan dengan perintah di atas (meskipun terlihat menggunakan benar lxc config show CONTAINER
) tidak membuat apa pun di dalam wadah saya.
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar
Petunjuk yang terkubur dalam Format Input Data Pengguna, item 5: Cloud Config Data berbunyi:
dimulai dengan "#cloud-config"
atau "Content-Type: text/cloud-config"
Konten ini adalah data "cloud-config". Lihat contoh untuk contoh komentar dari format konfigurasi yang didukung.
Saya tidak percaya dokumentasi ini sangat jelas. Saya tidak bisa mendapatkan apa pun untuk bekerja menggunakan formulir "Content-Type: text / cloud-config" tetapi saya menemukan jika Anda meletakkannya #cloud-config
di baris pertama, YAML diuraikan. Saya hanya bisa berasumsi ada sesuatu yang tidak beres, baik pemahaman saya, atau pemrograman seseorang. Tidak masuk akal bagi saya bahwa YAML Anda telah secara eksplisit memuat nilai kunci user.user-data
harus digunakan sebagai apa pun selain data konfigurasi cloud. Mengapa lagi ada orang yang melakukan itu jika itu tidak dimaksudkan untuk konfigurasi cloud, dan karena itu mengapa komentar (yang bahkan tidak menggunakan sintaks shebang normal) diperlukan ?
Jadi, selain omong kosong, sintaks yang bekerja user.user-data
adalah:
#cloud-config
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar