Jak odpalić instancje EC2 i załadować / uruchomić skrypt startowy na każdej z nich?

Chcę zautomatyzować uruchomienie zestawu instancji EC2 Linuksa.

W zasadzie chcę napisać skrypt/program, który:

  • Instantiate N wystąpień danego AMI mojego.
  • dla każdej uruchomionej instancji, wysyłał on Niestandardowy skrypt i pozwalał uruchamiać skrypt do instancji.

Używając VMWare, Zwykle robiłbym to używając vmrun lub Vix SDK.

Jakie są opcje w Amazon AWS / EC2?

Author: hjpotter92, 2012-04-12

2 answers

Odpowiedź zależy trochę od tego, co AMI używasz, ponieważ dostarczone funkcje są całkowicie zależne od AMI.

[1]}Amazon Linux Amis i oficjalne Ubuntu AMIs mają zainstalowany pakiet cloud-init. Ma to wiele sposobów na uruchamianie akcji startowych, ale ten, który najbardziej pasuje do twojego żądania (i mój ulubiony, ponieważ go wymyśliłem), to koncepcja skryptu danych użytkownika.

Możesz po prostu przekazać dowolny skrypt (zaczynając od dwóch znaków #!) jako dane użytkownika podczas uruchamiania instancji EC2. Zostanie uruchomiony jako root przy pierwszym uruchomieniu instancji.

Dla konkretnego przykładu jak to działa, używam tej techniki w moim ostatnim artykule: wgrywanie znanego klucza hosta ssh w skrypcie EC2 user-data

Chciałeś również uruchomić więcej niż jedną instancję EC2 z tym samym skryptem. Polecenie EC2-run-instances oraz powiązane interfejsy API i konsola internetowa pozwalają określić dowolną liczbę wystąpień, które mają zaczynać się od tego samego dane użytkownika. Na przykład:

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

Jeśli aktualnie używasz AMI, które nie ma zainstalowanego cloud-init, możesz wykonać jedną z następujących czynności:

  • Przełącznik do AMI, który ma zainstalowany cloud-init, lub

  • Zbuduj niestandardową wersję AMI, która ma zainstalowaną chmurę INIT, lub

  • Napisz bardziej skomplikowany skrypt opakowujący, który tworzy rejestr wszystkich identyfikatorów instancji po ich uruchomieniu, czeka na przeniesienie wszystkich instancji do uruchomionego stan, czeka na akceptację połączeń przez sshd, przesyła skrypt startowy do każdej instancji i uruchamia skrypt startowy na każdej instancji.

 81
Author: Eric Hammond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-12 17:08:59

Mam tutorial do uruchomienia skryptu w "cloud-init", który uruchamia się za każdym razem, gdy AWS EC2 jest uruchamiany.

  • Aby ustawić plik konfiguracyjny (AWS CentOS6) i

  • Uruchom Skrypty podczas uruchamiania EC2

Aby ustawić plik konfiguracyjny na Linuksie, możesz zapoznać się z configure cloud-init na AWS Linux .

Ja osobiście używam AWS VPC / EBS to była konfiguracja oparta na Linuksie AMI, nie dotykałem wszystko w pliku konfiguracyjnym /etc/cloud/cloud.cfg, ale mój skrypt startowy w chmurze-init działa dobrze.

 1
Author: Chetabahana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:18