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

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

В принципе, я хочу написать скрипт / программу, которая:

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

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

Каковы варианты в Amazon AWS / EC2?

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

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

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

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

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

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

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

  • Переключитесь на AMI с установленной облачной инициализацией или

  • Создайте собственную версию AMI с установленной облачной инициализацией или

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

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

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

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

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

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

Давайте будем гением компьютера.