Điểm:0

Làm cách nào để chuyển cấu hình đám mây sang LXD?

lá cờ it

Tôi đã đến vô số trang web bao gồm cả trang này, cố gắng tìm ra cách làm cho LXD chạy cấu hình đám mây khi tôi khởi chạy bộ chứa LXD của mình. Một số nơi khuyên bạn nên thiết lập hồ sơ (không hoạt động). Những người khác khuyên bạn nên chuyển hướng tệp YAML vào lệnh lxc (không hoạt động) và những người khác khuyên bạn nên sử dụng lệnh --config tùy chọn và chuyển tệp theo cách đó (không hoạt động). Một số nơi nói rằng tôi phải thêm #cloud-config vào cấu hình của tôi, những người khác không bận tâm. Một số thậm chí còn khuyên bạn nên sử dụng tệp XML. Rõ ràng là tôi đang thiếu một số thông tin quan trọng mà mọi người khác chỉ làm theo mặc định, nhưng tôi không thể hiểu đó là gì.

"Ví dụ đơn giản" đã cập nhật của tôi cố cài đặt cây và cố chạm vào/run/cloud-config-did-run:

xóa lxc -f x

con mèo << EOF >config.yml
#cloud-config
đầu ra: {tất cả: '| tee -a /var/log/my-cloud-init-output.log'}
gói_update: đúng
gói_upgrade: đúng
gói_reboot_if_required: đúng
gói:
  - cây
chạy cmd:
  - chạm /run/cloud-config-did-run
EOF

lxc khởi chạy ubuntu: x --config=user.user-data="$(cat config.yml)"
ngủ 5
lxc exec x -- bash -c "ls /run"
lxc exec x -- bash -c "cây/etc"

Đầu ra KHÔNG được hướng đến /var/log/my-cloud-init-output.log, vì vậy nó đang được xử lý, nhưng không có gì khác ngoài đầu ra chạy lệnh (nhật ký thậm chí không đề cập đến bất kỳ thứ nào khác đang chạy hoặc bất kỳ lỗi nào - chỉ là nội dung keygen SSH tiêu chuẩn).

Có lẽ vết lõm là sai? Hoặc cấu hình nằm trong cây con sai? Hoặc có một số giá trị ma thuật bị thiếu? Một phiên bản của LXD nơi này bị hỏng? (Tôi đang chạy phiên bản 4.20). Tôi đã ở đây được 10 giờ cho đến nay và bất kể tôi làm gì, cấu hình đám mây của tôi hoàn toàn bị bỏ qua (không có lỗi, không có nhật ký, không có bản ghi nào về bất kỳ thứ gì đang chạy, không có bản ghi nào mà tôi đã từng hướng dẫn nó làm bất cứ điều gì - ngoài công cụ keygen ssh tiêu chuẩn dường như được đưa vào). Ai đó có thể vui lòng biến ví dụ trên thành một ví dụ hoạt động được đảm bảo để chạy nếu tôi chỉ dán nó vào trình bao không?

djdomi avatar
lá cờ za
Tôi không chắc chắn, nhưng bạn đang cố gắng làm gì hoặc sửa chữa?
lá cờ it
Tôi đang cố làm cho nó tự động chạy một lệnh bên trong bộ chứa LXD khi tôi khởi chạy nó. Cuối cùng, tôi muốn nó tự động cài đặt một số gói, nhưng bây giờ tôi chỉ muốn một cái gì đó, bất cứ thứ gì hoạt động được.
lá cờ jp
Bạn đã kiểm tra `/var/log/cloud-init.log` chưa?
lá cờ it
Đúng. Đó là nơi xuất phát của mục nhật ký ở trên. Không có mục lỗi hoặc bất cứ điều gì có thể gợi ý bất cứ điều gì sai.
lá cờ jp
Có một lưu ý trong tài liệu mô-đun `cloud-init` `runcmd`: "khi ghi tệp, không sử dụng /tmp dir vì nó chạy đua với systemd-tmpfiles-clean LP: #1707222. Thay vào đó, hãy sử dụng /run/somedir."
lá cờ it
Cài đặt gói và xuất văn bản trạng thái cũng không hoạt động. Tôi chỉ sử dụng điều này làm ví dụ, bởi vì thực sự không có gì hiệu quả.
lá cờ jp
Bạn có thể thử thêm `đầu ra: {tất cả: '| tee -a /var/log/cloud-init-output.log'}` thành `config.yml`. Nó sẽ giúp một chút với việc gỡ lỗi.
lá cờ it
Đã cập nhật để sử dụng/chạy và cũng cố cài đặt thứ gì đó. Thật kỳ lạ, chỉ thị `đầu ra` được tôn trọng, ngoài ra không có gì khác và không có gì khác thường xuất hiện trong nhật ký.
lá cờ jp
Bạn có thể muốn kiểm tra xem `cloud-init` có nhận ra rằng nó đang được chạy ở giai đoạn `khởi động lần đầu` hay không. Nếu tôi nhớ không nhầm thì nó bỏ qua hầu hết các mô-đun sau lần khởi động đầu tiên.
lá cờ it
Làm thế nào tôi sẽ làm điều đó? Tôi đang đến với điều này hoàn toàn mới, vì vậy tôi đã theo dõi các blog và hướng dẫn, nhưng không có blog nào hoạt động và không có blog nào cho biết cách khắc phục sự cố vì đây được cho là một việc vặt vãnh... Tôi thực sự không hiểu Tôi không hiểu tại sao nó lại có thể thất bại một cách ngoạn mục như vậy trên hai hệ thống riêng biệt (một cái chạy ubuntu, cái kia chạy nixos)
lá cờ it
Đây là lý do tại sao tôi hy vọng rằng ai đó sẽ chạy thứ gì đó tầm thường hoạt động trên hệ thống của họ và sau đó đăng nó ở đây để tôi xác minh thứ gì đó đang chạy ở nơi khác.
Điểm:0
lá cờ in

Thông tin (không phải) có sẵn về cấu hình đám mây thực sự là một điều khó khăn. Và các tài liệu vẫn còn xấu. Nhưng điều đầu tiên trước tiên:
Tôi đã thử chính xác mã của bạn và đã thành công (nâng cấp gói + /run/cloud-config-did-run đã làm việc). thử nghiệm với Ubuntu 20.04 cũng như 22.04.

NHƯNG, tôi làm việc trên LXD 5.1. Vì vậy, đây có thể là sự khác biệt chính quan trọng.


Một số nhận xét có thể hữu ích:

  • Tôi định cấu hình một đầu ra đơn giản để phân biệt giữa các giai đoạn init, config, final và trong đó giữa nhật ký tiêu chuẩn và lỗi. Điều đó làm cho việc gỡ lỗi dễ dàng hơn.

    đầu ra:
      init: ["> /tmp/cloud-init.log", "> /tmp/cloud-init.err"]
      cấu hình: [ "> /tmp/cloud-init-config.log", "> /tmp/cloud-init-config.err" ]
      cuối cùng: [ "> /tmp/cloud-init-final.log", "> /tmp/cloud-init-final.err" ]
    
  • Ngay sau khi tôi đã bắn khởi chạy lxc chỉ huy
    Tôi thay đổi vào container với vỏ lxc x.
    Với trạng thái khởi tạo đám mây --wait Tôi xem liệu mọi thứ có hoạt động ("xong") hay không.
    Nếu nó thất bại /tmp/*.err là bạn của bạn

  • Cho đến bây giờ tôi chưa bao giờ gặp vấn đề với việc viết thư cho /tmp. Cloud-init đã thay đổi thứ tự thực hiện ở đâu đó trong quá khứ. Điều đó có thể đã giải quyết nó.

  • kiến thức vô dụng: gói_update được bao gồm trong gói_upgrade

  • #cloud-config là cần thiết. Tôi đã thử mà không có và nó không hoạt động. YAML đã bị bỏ qua hoàn toàn

  • Về định dạng cấu hình đám mây: chính là YAML (đuôi file không quan trọng).Tôi không nghĩ bất cứ thứ gì khác phù hợp với LXD - ngoài kho lưu trữ nhiều phần MIME

  • Kho lưu trữ đa phần MIME hoạt động với LXD và đây là cách tốt để sử dụng lại mã cho các cấu hình khác nhau. Nó dễ sử dụng nhưng các tài liệu có vẻ thô sơ.
    Một ví dụ nhỏ với bạn config.yml cùng với tập lệnh shell:

    con mèo << EOF >test.sh
    #!/usr/bin/env bash
    chạm /run/here-we-go-with-a-shellscript
    EOF
    
    cloud-init devel make-mime -a config.yml:cloud-config -a test.sh:x-shellscript-per-once > newconfig
    lxc khởi chạy ubuntu:j f --config=user.user-data="$(cat /root/newconfig)"
    vỏ lxc f
    trạng thái khởi tạo đám mây --wait
    ls /run
    

    Điểm khởi đầu tốt để làm việc với kho lưu trữ nhiều phần MIME có lẽ là đây trang tài liệu cloudinit

  • Cấu hình LXD với cấu hình đám mây đã hoạt động khi chúng tôi thử nghiệm, nhưng chúng tôi không sử dụng nó

Tôi hy vọng điều đó sẽ giúp bằng cách nào đó. Nếu bạn quan tâm, tôi có thể thêm một yaml khởi tạo đám mây lớn hơn mà chúng tôi đã thử nghiệm để thiết lập vùng chứa web điển hình phía sau proxy ngược.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.