Запустите скрипт bash после загрузки экземпляра EC2

19

У меня есть сценарий на экземпляре EC2, который удаленно запускает другой экземпляр.

Как только этот экземпляр полностью загрузится (завершит загрузку), я хочу, чтобы он автоматически запускал скрипт bash, что будет лучшим способом сделать это?

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

В настоящее время скрипт находится здесь:

/home/root/beginProcess.sh

И я могу запустить его вручную, выполнив

bash beginProcess.sh

RHEL-6,2-Starter-EBS-i386

Также к этому приложен том EBS, если это поможет, спасибо!

SSH это
источник

Ответы:

26

Я бы предложил просто использовать опцию пользовательских данных для ec2-run-instances. Это позволяет вам дать какой-то скрипт для виртуальной машины, который будет запущен при первой загрузке. Если вы используете Ubuntu или Debian, вы можете использовать cloud-init , что немного подправит процесс. Если вы используете cloud-init, вы можете использовать [runcmd]раздел файла конфигурации, чтобы указать произвольные команды для запуска после загрузки.

Спасибо пользователю SF Эрику Хаммонду за страницу с данными пользователя. Проверьте его сайт - на AWS есть много информации.

Изменить: После перечитывания, не ясно, хотели ли вы выполнить команду при начальной загрузке или при каждой загрузке. Приведенные выше инструкции относятся только к начальной загрузке. Если вы хотите запускать команду при каждой загрузке, у вас есть пара опций - вы можете запустить команду через @rebootдирективу cron или, в качестве альтернативы, вы можете добавить скрипт /etc/rc.local, который будет запускаться при каждой загрузке системы.

EEAA
источник
1
Огромное спасибо за ответ, чтобы уточнить, что я хотел, чтобы он запускался каждый раз, когда система загружается, /etc/rc.localчудесно работает, ура
SSH This
9

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

Например, это может быть так просто:

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

Вот статья, в которой я представил концепцию сценариев пользовательских данных, которая теперь доступна в основных AMI EC2, таких как 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