Запустіть скрипт bash після завантаження екземпляра EC2


19

У мене є сценарій на екземплярі EC2, який віддалено запускає інший екземпляр.

Після того, як цей екземпляр повністю завантажений (завершено завантаження), я хочу, щоб він автоматично запустив скрипт bash, який би був найкращий спосіб зробити це?

Мені потрібно все для повного запуску, в основному сценарій bash запускає сценарій перетворення зображень (використовуючи ImageMagick і кілька разів виконує команду "wget")

В даний час сценарій знаходиться тут:

/home/root/beginProcess.sh

І я можу його запустити вручну, виконавши

bash beginProcess.sh

RHEL-6.2-Starter-EBS-i386

Також до цього додається обсяг EBS, якщо це допомагає, Дякую!

Відповіді:


26

Я б запропонував просто скористатися параметром даних користувача для ec2-run-instances. Це дозволяє вам надати певний сценарій VM, який буде запускатися під час першого завантаження. Якщо ви використовуєте ubuntu або debian, ви можете використовувати cloud-init , який додає певний приємний лак для процесу. Якщо ви використовуєте cloud-init, ви можете використовувати [runcmd]розділ конфігураційного файлу, щоб вказати довільні команди, які потрібно запустити після завантаження.

Завдяки користувачеві SF Еріку Хаммону за сторінку даних користувачів. Перегляньте його сайт - він має велику кількість інформації про AWS.

Редагування: Після повторного читання незрозуміло, чи хотіли ви виконати команду при початковому завантаженні або при кожному завантаженні. Наведені вище інструкції стосуються лише початкового завантаження. Якщо ви хочете запустити команду на кожному завантаженні, у вас є пара варіантів - ви можете запустити команду через @rebootдирективу cron, або ж ви можете додати скрипт /etc/rc.local, який буде виконуватися щоразу, коли система завантажується.


1
Дивовижний спасибі за відповідь, щоб уточнити, що я хотів, щоб вона працювала щоразу, коли система завантажується, /etc/rc.localчудово працює, вітайте
SSH Цього

9

Якщо ви використовували AMI з cloud-initвстановленим пакетом (наприклад, Amazon Linux або Ubuntu), ви можете просто передати скрипт bash (який починається з #!) Як файл даних користувача, і він запуститься автоматично в кінці процес завантаження.

Наприклад, це може бути так просто, як:

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

Ось стаття, де я представив концепцію сценарію даних про користувацькі дані, яка тепер доступна у великих ECI AMI, таких як Amazon Linux та Ubuntu: http://alestic.com/2009/06/ec2-user-data-scripts

На жаль, схоже, ви хочете використовувати RHEL AMI. Я запустив копію цього і не зміг знайти жодних посилань на cloud-init або запущені сценарії даних користувачів під час першого завантаження, ні тестування тієї самої роботи.

Я не кажу, що ви повинні переключити дистрибутиви Linux саме для цього, але Amazon Linux базується на RHEL, щоб це могло працювати для вас.

Ось стаття, яку я написав, яка може допомогти вам налагодити сценарій даних користувачів, якщо він не працює з першого разу: http://alestic.com/2010/12/ec2-user-data-output


Оффтопік, але дякую, що ви створили і таке безцінне. Три ура.
danieljimenez
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.