Uruchom skrypt bash po uruchomieniu instancji EC2

19

Mam skrypt na instancji EC2, który zdalnie uruchamia inną instancję.

Gdy to wystąpienie zostanie w pełni załadowane (zakończone ładowanie), chcę, aby automatycznie uruchomiło skrypt bash, jaki byłby najlepszy sposób na to?

Potrzebuję wszystkiego, aby być w pełni uruchomionym, w zasadzie skrypt bash uruchamia skrypt konwersji obrazu (używając ImageMagick i wykonuje polecenie „wget” kilka razy)

Obecnie skrypt znajduje się tutaj:

/home/root/beginProcess.sh

I mogę uruchomić go ręcznie, wykonując

bash beginProcess.sh

RHEL-6.2-Starter-EBS-i386

Do tego dołączony jest również wolumin EBS, jeśli to pomaga, dziękuję!

SSH This
źródło

Odpowiedzi:

26

Sugerowałbym użycie opcji danych użytkownika do ec2-run-instances. Pozwala ci podać jakiś skrypt do maszyny wirtualnej, która zostanie uruchomiona przy pierwszym uruchomieniu. Jeśli korzystasz z Ubuntu lub Debiana, możesz skorzystać z Cloud-init , co znacznie poprawia proces. Jeśli używasz inicjowania w chmurze, możesz użyć [runcmd]sekcji pliku konfiguracyjnego, aby określić dowolne polecenia do uruchomienia po uruchomieniu.

Podziękowania dla użytkownika SF Erica Hammonda za stronę danych użytkownika. Sprawdź jego stronę - zawiera mnóstwo informacji na temat AWS.

Edycja: Po ponownym przeczytaniu nie jest jasne, czy chcesz uruchomić polecenie przy pierwszym uruchomieniu, czy przy każdym uruchomieniu. Powyższe instrukcje dotyczą tylko początkowego rozruchu. Jeśli chcesz uruchomić polecenie przy każdym uruchomieniu, masz kilka opcji - możesz uruchomić polecenie za pomocą @rebootdyrektywy cron lub możesz dodać skrypt, do /etc/rc.localktórego będzie uruchamiany przy każdym uruchomieniu systemu.

EEAA
źródło
1
Niesamowite dzięki za odpowiedź, aby wyjaśnić, że chcę, aby działał za każdym razem, gdy system uruchamia się, /etc/rc.localdziała wspaniale, na zdrowie
SSH To
9

Jeśli korzystasz z interfejsu AMI z cloud-initzainstalowanym pakietem (np. Amazon Linux lub Ubuntu), możesz po prostu przekazać skrypt bash (zaczynający się od #!) Jako plik danych użytkownika i uruchomi się on automatycznie na końcu proces rozruchu.

Na przykład może to być tak proste, jak:

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

Oto artykuł, w którym przedstawiłem koncepcję skryptu danych użytkownika, teraz dostępną w głównych AMI EC2, takich jak Amazon Linux i Ubuntu: http://alestic.com/2009/06/ec2-user-data-scripts

Niestety wygląda na to, że chcesz użyć RHEL AMI. Uruchomiłem kopię tego i nie mogłem znaleźć żadnych odniesień do inicjowania w chmurze lub uruchamiania skryptów danych użytkownika przy pierwszym uruchomieniu, ani nie przetestowałem tej samej pracy.

Nie twierdzę, że powinieneś zmienić dystrybucję Linuksa tylko w tym celu, ale Amazon Linux jest oparty na RHEL, więc może ci się to przydać.

Oto artykuł, który napisałem, który może pomóc w debugowaniu skryptu danych użytkownika, jeśli nie działa po raz pierwszy: http://alestic.com/2010/12/ec2-user-data-output

Eric Hammond
źródło
Offtopic, ale dziękuję za stworzenie tak bezcennej wartości. Trzy okrzyki.
danieljimenez