Ответ 1
Ответ зависит от того, какой AMI вы используете, поскольку предоставленные функции полностью зависят от AMI.
Amazon Linux AMIS и официальные AMI Ubuntu имеют установленный cloud-init. Это имеет несколько способов запуска действий запуска, но тот, который наиболее точно соответствует вашему запросу (и мой любимый, потому что я его придумал), представляет собой концепцию user-data script.
Вы можете просто передать любой script (начиная с двух символов #!) в качестве пользовательских данных при запуске экземпляров EC2. Он будет запущен как root при первой загрузке экземпляра.
Для конкретного примера того, как это работает, я использую эту точную технику в своей недавней статье: Загрузка известного ключа ssh Host в пользовательских данных EC2 script
Вы также хотели запустить более одного экземпляра EC2 с тем же script. Команда ec2-run-examples и связанные с ней API и веб-консоль позволяют указать любое количество экземпляров для запуска с одними и теми же данными пользователя. Например:
ec2-run-instances \
--instance-count 10 \
--user-data-file $MYSCRIPT \
--key $USER \
$SOMEAMI
Если вы в настоящее время используете AMI, у которого нет установленного облака, вы можете выполнить одно из следующих действий:
-
Переключитесь на AMI с установленным облаком, или
-
Создайте пользовательскую версию вашего AMI с установленным облачным init или
-
Напишите более сложную оболочку script, которая делает запись всех идентификаторов экземпляра после их запуска, ждет, пока все экземпляры перейдут в текущее состояние, ждет, когда sshd примет соединения, загружает ваш запуск script в каждый экземпляр и запускает запуск script для каждого экземпляра.