Điểm:1

chạy tập lệnh qua cloud-init

lá cờ gb

Tôi biết khởi tạo đám mây cho phép chạy các lệnh như một phần của khởi tạo đám mây yml

chạy cmd:
 - [ pwd ]

nhưng tôi đang tìm cách thực thi tập lệnh shell đầy đủ.

Một số người chỉ dẫn đầu ra của một Xoăn vào một cái vỏ - nhưng cảm giác đó giống như một cách tiếp cận rất khó khăn. Có thể tập lệnh có thể được tích hợp vào yml thông qua một số khuôn mẫu, nhưng điều đó nghe cũng không hay lắm.

Sẽ tốt hơn nhiều nếu gửi tập lệnh cùng với yml tới máy chủ lưu trữ và tham khảo tập lệnh đó. Nhưng tôi chưa tìm thấy bất kỳ tài liệu nào về cách thực hiện việc này.

Điều này có thể không?

tôi đang dùng địa hình để thiết lập máy chủ, nhưng tôi tự hỏi liệu điều này cũng có thể được thực hiện với tinh khiết khởi tạo đám mây.

Điểm:1
lá cờ vn
rvs

Hãy thử kết hợp nó với write_files.

Bạn có thể viết kịch bản ở đâu đó (ví dụ như /usr/local/bin/myscript.sh) và sau đó làm runcmd: /usr/local/bin/myscript.sh

Đảm bảo đặt quyền thực thi.

lá cờ gb
Điều đó có vẻ đầy hứa hẹn! Nhưng các tài liệu không chỉ định rõ ràng vòng đời. `write_files` có chắc chắn sẽ được chạy trước `runcmd` không?
rvs avatar
lá cờ vn
rvs
@tcurdt cũng không chắc. cho nó đi và xem nếu nó hoạt động?
Xerkus avatar
lá cờ sg
@tcurdt Tôi muốn nói rằng nó phụ thuộc vào những gì có trong /etc/cloud/cloud.cfg Từ những gì tôi đã thấy, mô-đun ghi tệp đang diễn ra trong giai đoạn khởi tạo trong khi runcmd xảy ra trong giai đoạn cấu hình.
Điểm:0
lá cờ sa

nếu bạn chỉ có muốn chạy tập lệnh, bạn có thể chuyển tập lệnh trực tiếp dưới dạng dữ liệu người dùng, thay vì sử dụng cấu hình đám mây. Miễn là tập lệnh bắt đầu bằng #!, cloud-init sẽ cố gắng chạy nó trực tiếp, thay vì diễn giải nó dưới dạng cloud-config.

Nếu bạn muốn chạy cả cloud-config và một tập lệnh riêng, trong khi tập lệnh kia được đăng write_files giải pháp sẽ hoạt động, bạn cũng có thể chuyển kho lưu trữ nhiều phần kịch câm. Cloud-init chứa tập lệnh trợ giúp để thực hiện việc này dễ dàng hơn một chút. Giả sử bạn có dữ liệu người dùng trong một tệp có tên my-user-data:

#cloud-config
chạy cmd:
  - tiếng vang 'kiểm tra từ đám mây-config' > /var/tmp/test_from_cloud_config

Và một kịch bản bạn muốn chạy callecd kiểm tra.sh:

#!/bin/bash

tiếng vang 'test_from_script' > /var/tmp/test_from_script

Bạn có thể gọi:

cloud-init devel make-mime -a test.sh:x-shellscript -a my-user-data:cloud-config > /tmp/userdata

Bạn có thể lấy tệp nhiều phần kết quả và chuyển nó tới cloud-init dưới dạng dữ liệu người dùng (ví dụ: sử dụng LXD):

lxc khởi chạy ubuntu:focal multi -c user.user-data="$(cat /tmp/userdata)"

Bạn có thể thấy rằng cả cloud-config và script đều đã chạy:

root@multi:~# mèo /var/tmp/test_from_cloud_config 
kiểm tra từ đám mây-config
root@multi:~# mèo /var/tmp/test_from_script 
test_from_script

Nhìn thấy tài liệu khởi tạo đám mây để tham khảo.

lá cờ ph
Vì câu hỏi này được gắn thẻ "terraform" nên tôi cũng muốn lưu ý rằng [nguồn dữ liệu `cloudinit_config` thuộc về nhà cung cấp `hashicorp/cloudinit` Terraform](https://registry.terraform.io/providers/hashicorp/cloudinit/latest /docs/data-sources/cloudinit_config) thực sự là một tương đương được tích hợp với Terraform của `cloud-init devel make-mime`, có thể tránh được bước tạo một tệp tạm thời riêng biệt nếu bạn tình cờ thiết lập mọi thứ với Terraform.
lá cờ gb
Chi tiết siêu thú vị. Tôi đã không nhận ra rằng bạn cũng có thể tự chuyển một kịch bản. Thật tốt khi biết shebang là đủ tốt.

Đă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.