Tôi đã có một câu hỏi cụ thể hơn một chút so với OP nhưng tôi phải mất một thời gian để tìm ra những gì tôi đã làm sai. Tôi nghĩ rằng tôi sẽ đăng nó ở đây để giúp bất cứ ai khác bị bối rối tương tự.
Tôi muốn cài đặt mạng tĩnh cho bộ chứa LXC / LXD Ubuntu 16.04 được lưu trữ trên Ubuntu 16.04. Tôi đã bắt đầu bằng cách thử những gì Stéphane viết nhưng nó không hoạt động. Tất cả những gì tôi đã kết thúc là bộ chứa thử DHCP mặc định có liên kết IPv6 cục bộ, vì không có DHCP nào được phục vụ trong cấu hình của tôi.
YAML ban đầu của tôi trông giống như sau (được lấy từ các tài liệu trên nền tảng đám mây ).
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
Và tôi đã tải cái này vào user.user-data
như mô tả ở trên.
lxc config set CONTAINER user.user-data - < CONTAINER.cloud-init-config.yml
Mãi cho đến khi tôi tìm thấy tài liệu của Stéphane trong nguồn LXC / LXD mà tôi nhận ra rằng tôi cần phải tải giá trị đó vào user.network-config
.
Vì vậy, YAML cuối cùng của tôi trông như thế này.
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
Sau đó, tôi tải cái này vào user.network-config
.
lxc config set CONTAINER user.network-config - < CONTAINER.network-config.yaml
Có vẻ như tôi sẽ cần giữ hai tệp khác nhau cho mỗi vùng chứa: một tệp để cài đặt mạng được tải xuống user.network-config
; và một cho cấu hình khác tải vào user.user-data
trừ khi tôi có thể tìm cách sử dụng một tệp duy nhất cho mọi thứ.
Một vấn đề khác mà tôi thấy không rõ ràng đối với tôi là cố gắng tự động định cấu hình các thành phần phi mạng.
lxc config set CONTAINER user.user-data - < CONTAINER.user-data.yaml
YAML sau đây được áp dụng với lệnh trên (mặc dù sử dụng đúng lxc config show CONTAINER
) không tạo ra bất cứ thứ gì trong thùng chứa của tôi.
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar
Manh mối chôn vùi trong Định dạng nhập dữ liệu người dùng, mục 5: Dữ liệu cấu hình đám mây đọc:
bắt đầu bằng "#cloud-config"
hoặc "Content-Type: text/cloud-config"
Nội dung này là dữ liệu "cấu hình đám mây". Xem các ví dụ cho một ví dụ nhận xét về các định dạng cấu hình được hỗ trợ.
Tôi không tin tài liệu này rất rõ ràng. Tôi không thể làm bất cứ điều gì để làm việc bằng cách sử dụng biểu mẫu "Kiểu nội dung: văn bản / đám mây-cấu hình" nhưng tôi đã tìm thấy nếu bạn đặt #cloud-config
dòng đầu tiên, YAML được phân tích cú pháp. Tôi chỉ có thể cho rằng một cái gì đó không hoàn toàn đúng, theo sự hiểu biết của tôi, hoặc lập trình của ai đó. Thật vô nghĩa với tôi rằng YAML bạn đã tải rõ ràng là giá trị của khóa user.user-data
nên được sử dụng như bất kỳ thứ gì khác ngoài dữ liệu cấu hình đám mây. Tại sao mọi người khác sẽ làm điều đó nếu nó không có nghĩa là cấu hình đám mây, và do đó tại sao một bình luận (thậm chí không sử dụng cú pháp shebang bình thường) được yêu cầu ?
Vì vậy, vô nghĩa sang một bên, cú pháp làm việc user.user-data
là:
#cloud-config
write_files:
- content: |
# My new /etc/foo.bar file
Foo
Bar
path: /etc/foo.bar