Có cách nào để định cấu hình bộ chứa lxd với cấu hình đám mây tại thời điểm cung cấp không?


10

Cụ thể, với các công cụ CLI - không phải openstack.

Tôi đang xem một thiết lập dev cục bộ với lxd có thể trông như thế nào nhưng lại trở nên trắng tay khi nói đến việc cấu hình các container mới.

Có bất kỳ cách thành ngữ (hoặc cách khác) để cấu hình các thùng chứa lxd không? Tôi có nên nhìn vào một cái gì đó bất biến hơn như hình ảnh docker?

Cảm ơn. Bất kỳ tài nguyên hoặc con trỏ sẽ được đánh giá cao.

Câu trả lời:


13

Vì vậy, có nhiều cách bạn có thể làm như vậy, trực tiếp cho một container:

lxc init ubuntu: CONTAINER
lxc config set CONTAINER user.user-data - < cloud-init-config.yml
lxc start CONTAINER

Hoặc thậm chí ngắn hơn:

lxc launch ubuntu: CONTAINER --config=user.user-data="$(cat cloud-init-config.yml)"

Hoặc thông qua một hồ sơ:

lxc profile create dev
lxc profile set dev user.user-data - < cloud-init-config.yml
lxc launch ubuntu: CONTAINER -p default -p dev

Làm thế nào các tập tin .sh có thể được sử dụng thay vì .yml? Có một hướng dẫn đã có sẵn về chủ đề này?
Greg

Ở trên có liên quan đến câu hỏi này: stackoverflow.com/questions/44456522
Greg

3

Một lớp lót tôi đã đi với ngày hôm nay, cái này đặt nó trong cấu hình mặc định cho các thùng chứa mới:

echo -e "#cloud-config\nssh_authorized_keys:\n - $(cat ~/.ssh/id_rsa.pub)" | lxc profile set default user.user-data -

Cái này đặt nó trong một thùng chứa hiện có, nhưng hãy cẩn thận, nó sẽ không hoạt động trên các thùng chứa đã được khởi động vì công cụ khóa SSH chỉ được thực hiện trong lần khởi động đầu tiên:

echo -e "#cloud-config\nssh_authorized_keys:\n - $(cat ~/.ssh/id_rsa.pub)" | lxc config set CONTAINER_NAME user.user-data -


3

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-datanhư 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-datatrừ 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-configdò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-datanê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-datalà:

#cloud-config

write_files:
  - content: |
      # My new /etc/foo.bar file

      Foo
      Bar

    path: /etc/foo.bar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.