it-swarm.com.ru

Как запустить экземпляры EC2 и загрузить/запустить скрипт запуска на каждом из них?

Я хочу автоматизировать запуск набора экземпляров Linux EC2.

По сути, я хочу написать скрипт/программу, которая бы:

  • Изучить N случаев данного AMI моего.
  • Для каждого запущенного экземпляра он загружает настроенный сценарий и позволяет сценарию запускаться в экземпляре.

Используя VMWare, я обычно делал бы это, используя vmrun или Vix SDK.

Какие есть варианты в Amazon AWS/EC2?

53
Serge Wautier

Ответ немного зависит от того, какой AMI вы используете, поскольку предоставляемые функции полностью зависят от AMI.

AMIS Amazon Linux и официальные AMI Ubuntu имеют установленный пакет cloud-init . У этого есть несколько способов запуска действий при запуске, но тот, который наиболее точно соответствует вашему запросу (и мой любимый, потому что я его придумал), это концепция сценарий пользовательских данных .

Вы можете просто передать любой скрипт (начиная с двух символов #!) В качестве пользовательских данных при запуске экземпляров EC2. Он будет запущен с правами root при первой загрузке экземпляра.

Для конкретного примера того, как это работает, я использую эту точную технику в моей недавней статье: Загрузка известного ключа хоста ssh в скрипт пользовательских данных EC2

Вы также хотели запустить более одного экземпляра EC2 с одним и тем же сценарием. Команда ec2-run-instances и соответствующие API-интерфейсы и веб-консоль позволяют указать любое количество экземпляров для запуска с одними и теми же пользовательскими данными. Например:

ec2-run-instances            \
  --instance-count 10        \
  --user-data-file $MYSCRIPT \
  --key $USER                \
  $SOMEAMI

Если вы в настоящее время используете AMI, на котором не установлен cloud-init, вы можете выполнить одно из следующих действий:

  • Переключитесь на AMI, на котором установлен cloud-init, или

  • Создайте пользовательскую версию AMI с установленным cloud-init или

  • Напишите более сложный скрипт-обертку, который делает запись всех идентификаторов экземпляров после их запуска, ждет, когда все экземпляры перейдут в рабочее состояние, ждет, когда sshd примет соединения, загружает скрипт запуска в каждый экземпляр. и запускает сценарий запуска для каждого экземпляра.

82
Eric Hammond

У меня есть учебник по запуску скрипта в "cloud-init" , который запускается каждый раз при запуске AWS EC2. 

  • установить файл конфигурации (AWS CentOS6) и 

  • запускать скрипты при запуске EC2

Чтобы настроить файл конфигурации в Linux, вы можете обратиться к настроить cloud-init в AWS Linux

Я лично использую AWS VPC/EBS , который был настроен на основе Linux AMI, я ничего не трогал в файле конфигурации /etc/cloud/cloud.cfg, но мой загрузочный скрипт в облаке-init работает хорошо.

1
Chetabahana