Jalankan skrip bash setelah proses instance EC2

19

Saya memiliki skrip pada instance EC2 yang memulai instance lain dari jarak jauh.

Setelah instance ini sudah dimuat penuh (selesai booting) saya ingin skrip bash dijalankan secara otomatis, apa cara terbaik untuk melakukan ini?

Saya perlu semuanya dimulai sepenuhnya, pada dasarnya skrip bash menjalankan skrip konversi gambar (menggunakan ImageMagick dan menjalankan perintah "wget" beberapa kali)

Saat ini, skrip berada di sini:

/home/root/beginProcess.sh

Dan saya bisa memulainya secara manual dengan mengeksekusi

bash beginProcess.sh

RHEL-6.2-Starter-EBS-i386

Juga ada volume EBS yang melekat pada ini, jika itu membantu, Terima kasih!

SSH Ini
sumber

Jawaban:

26

Saya sarankan hanya menggunakan opsi data pengguna untuk ec2-run-instances. Ini memungkinkan Anda memberikan semacam script ke VM yang akan dijalankan saat boot pertama. Jika Anda menggunakan ubuntu atau debian, Anda dapat menggunakan cloud-init , yang akan memoles Anda. Jika menggunakan cloud-init, Anda dapat menggunakan [runcmd]bagian file konfigurasi untuk menentukan perintah sewenang-wenang untuk dijalankan setelah boot.

Terima kasih kepada pengguna SF Eric Hammond untuk halaman data pengguna. Lihatlah situsnya - ia memiliki banyak informasi tentang AWS.

Sunting: Setelah membaca ulang, tidak jelas apakah Anda ingin menjalankan perintah pada boot awal atau pada setiap boot. Instruksi di atas hanya berlaku untuk boot awal. Jika Anda ingin menjalankan perintah pada setiap boot, Anda memiliki beberapa opsi - Anda dapat menjalankan perintah melalui @rebootarahan cron, atau Anda juga dapat menambahkan skrip /etc/rc.local, yang akan dijalankan setiap kali sistem melakukan boot.

EEAA
sumber
1
Terima kasih luar biasa atas tanggapannya, untuk memperjelas saya ingin menjalankannya setiap kali sistem dinyalakan, /etc/rc.localbekerja dengan sangat baik, tepuk tangan
SSH
9

Jika Anda menggunakan AMI yang memiliki cloud-initpaket diinstal (seperti Amazon Linux atau Ubuntu) maka Anda bisa dengan mudah melewatkan skrip bash (yang dimulai dengan #!) Sebagai file data pengguna dan akan berjalan secara otomatis di akhir proses boot.

Misalnya, bisa sesederhana:

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

Inilah artikel di mana saya memperkenalkan konsep skrip data pengguna, sekarang tersedia di AMI EC2 utama seperti Amazon Linux dan Ubuntu: http://alestic.com/2009/06/ec2-user-data-scripts

Sayangnya, sepertinya Anda ingin menggunakan RHEL AMI. Saya menjalankan salinan itu dan tidak dapat menemukan referensi ke cloud-init atau menjalankan skrip data pengguna pada boot pertama, juga tidak melakukan tes dari pekerjaan yang sama.

Saya tidak mengatakan Anda harus beralih distro Linux hanya untuk ini, tetapi Amazon Linux didasarkan pada RHEL, sehingga mungkin bekerja untuk Anda.

Berikut adalah artikel yang saya tulis yang mungkin membantu Anda men-debug skrip data pengguna Anda jika tidak berfungsi pertama kali: http://alestic.com/2010/12/ec2-user-data-output

Eric Hammond
sumber
Offtopic, tapi terima kasih telah membuat yang tak ternilai juga. Tiga sorakan
danieljimenez