Chạy tập lệnh bash sau khi khởi động phiên bản EC2


19

Tôi có một đoạn script trên một thể hiện EC2 từ xa khởi động một thể hiện khác.

Khi phiên bản này đã được tải đầy đủ (khởi động xong) Tôi muốn nó tự động chạy một tập lệnh bash, cách tốt nhất để làm điều này là gì?

Tôi cần mọi thứ để được khởi động đầy đủ, về cơ bản, tập lệnh bash chạy tập lệnh chuyển đổi hình ảnh (sử dụng ImageMagick và thực thi lệnh "wget" một vài lần)

Hiện tại, kịch bản được đặt ở đây:

/home/root/beginProcess.sh

Và tôi có thể bắt đầu nó bằng tay bằng cách thực hiện

bash startedProcess.sh

RHEL-6.2-Starter-EBS-i386

Ngoài ra, có một khối lượng EBS kèm theo, nếu điều đó có ích, Cảm ơn!

Câu trả lời:


26

Tôi khuyên bạn chỉ nên sử dụng tùy chọn dữ liệu người dùng để ec2-run-instances. Nó cho phép bạn đưa ra một kịch bản nào đó cho VM sẽ được chạy trong lần khởi động đầu tiên. Nếu bạn đang sử dụng Ubuntu hoặc debian, bạn có thể sử dụng cloud-init , điều này giúp cho quá trình đánh bóng tốt đẹp. Nếu sử dụng cloud-init, bạn có thể sử dụng [runcmd]phần của tệp cấu hình để chỉ định các lệnh tùy ý để chạy sau khi khởi động.

Cảm ơn người dùng SF Eric Hammond cho trang dữ liệu người dùng. Kiểm tra trang web của anh ấy - nó có rất nhiều thông tin về AWS.

Chỉnh sửa: Sau khi đọc lại, không rõ bạn muốn chạy lệnh khi khởi động ban đầu hay trên mỗi lần khởi động. Các hướng dẫn trên chỉ áp dụng cho khởi động ban đầu. Nếu bạn muốn chạy một lệnh trên mỗi lần khởi động, bạn có một vài tùy chọn - bạn có thể chạy lệnh thông qua lệnh @rebootcron hoặc thay vào đó, bạn có thể thêm tập lệnh vào /etc/rc.local, sẽ được chạy mỗi khi hệ thống khởi động.


1
Cảm ơn tuyệt vời vì đã phản hồi, để làm rõ tôi muốn nó chạy mỗi khi hệ thống khởi động, /etc/rc.localđang hoạt động tuyệt vời, chúc mừng
SSH This

9

Nếu bạn đang sử dụng một AMI đã cloud-initcài đặt gói (như Amazon Linux hoặc Ubuntu) thì bạn có thể chỉ cần chuyển tập lệnh bash (bắt đầu bằng #!) Dưới dạng tệp dữ liệu người dùng và nó sẽ tự động chạy vào cuối quá trình khởi động.

Ví dụ, nó có thể đơn giản như:

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX

Đây là bài viết mà tôi đã giới thiệu khái niệm tập lệnh dữ liệu người dùng, hiện có sẵn trong các AMI EC2 lớn như Amazon Linux và Ubuntu: http://alatural.com/2009/06/ec2-user-data-scripts

Thật không may, có vẻ như bạn đang muốn sử dụng một RHEL AMI. Tôi đã chạy một bản sao của điều đó và không thể tìm thấy bất kỳ tài liệu tham khảo nào về cloud-init hoặc chạy các tập lệnh dữ liệu người dùng trong lần khởi động đầu tiên, cũng như không thực hiện một thử nghiệm nào cho cùng một công việc.

Tôi không nói rằng bạn nên chuyển đổi các bản phân phối Linux chỉ cho việc này, nhưng Amazon Linux dựa trên RHEL, vì vậy nó có thể phù hợp với bạn.

Đây là một bài viết tôi đã viết có thể giúp bạn gỡ lỗi tập lệnh dữ liệu người dùng của bạn nếu nó không hoạt động lần đầu tiên: http://alatural.com/2010/12/ec2-user-data-output


Offtopic, nhưng cảm ơn bạn đã tạo ra một giá trị như vậy quá. Ba người cổ vũ.
danieljimenez
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.