Frage Führen Sie nach dem Starten der EC2-Instanz ein Bash-Skript aus


Ich habe ein Skript auf einer EC2-Instanz, die remote eine andere Instanz startet.

Sobald diese Instanz vollständig geladen ist (abgeschlossenes Booten) möchte ich, dass sie automatisch ein Bash-Skript ausführt, was wäre der beste Weg, dies zu tun?

Ich brauche alles, um vollständig gestartet zu werden, im Grunde führt das Bash-Skript ein Bildkonvertierungsscript aus (mit ImageMagick und führt den "wget" -Befehl ein paar Mal aus)

Derzeit befindet sich das Skript hier:

/home/root/beginProcess.sh

Und ich kann es manuell durch Ausführung starten

bash beginProzess.sh

RHEL-6.2-Starter-EBS-i386

Es gibt auch ein EBS-Volumen, wenn das hilft, Danke!


18
2018-03-15 01:05


Ursprung




Antworten:


Ich würde vorschlagen, nur die Benutzerdaten Option zu ec2-run-instances. Damit können Sie der VM ein Skript geben, das beim ersten Start ausgeführt wird. Wenn Sie Ubuntu oder Debian verwenden, können Sie verwenden Cloud-Init, was den Prozess etwas aufpoliert. Wenn Sie cloud-init verwenden, können Sie das verwenden [runcmd] Abschnitt der Konfigurationsdatei, um beliebige Befehle anzugeben, die nach dem Start ausgeführt werden sollen.

Danke an SF Benutzer Eric Hammond für die Benutzerdatenseite. Schau dir seine an Seite? ˅ - Es hat eine Fülle von Informationen über AWS.

Bearbeiten: Nach dem erneuten Lesen ist nicht klar, ob Sie beim ersten Start oder bei jedem Start einen Befehl ausführen wollten. Die obigen Anweisungen gelten nur für den ersten Start. Wenn Sie bei jedem Booten einen Befehl ausführen wollen, haben Sie mehrere Möglichkeiten - Sie können einen Befehl über den Befehl ausführen @reboot cron-Direktive, oder alternativ können Sie das Skript hinzufügen /etc/rc.local, die bei jedem Systemstart ausgeführt wird.


25
2018-03-15 01:22



Toller Dank für die Antwort, um klarzustellen, dass ich es jedes Mal ausführen möchte, wenn das System bootet, /etc/rc.local funktioniert wunderbar, Prost - SSH This


Wenn Sie ein AMI mit dem cloud-init Paket installiert (wie Amazon Linux oder Ubuntu) dann könnten Sie einfach das Bash-Skript übergeben (das mit # beginnt!) als Benutzer-Datei und es würde automatisch am Ende des Boot-Prozesses laufen.

Zum Beispiel könnte es so einfach sein wie:

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

Hier ist der Artikel, in dem ich das Konzept der Benutzerdatenskripte vorgestellt habe, das nun in den wichtigsten EC2 AMIs wie Amazon Linux und Ubuntu verfügbar ist: http://alestic.com/2009/06/ec2-user-data-scripts

Leider sieht es so aus, als ob Sie ein RHEL AMI verwenden möchten. Ich habe eine Kopie davon ausgeführt und konnte beim ersten Start keine Verweise auf cloud-init finden oder Benutzerdaten-Skripts ausführen, noch wurde ein Test der gleichen Arbeit durchgeführt.

Ich sage nicht, dass Sie Linux-Distributionen nur dafür wechseln sollten, aber Amazon Linux basiert auf RHEL, also könnte das für Sie funktionieren.

Hier ist ein Artikel, den ich geschrieben habe, der Ihnen beim Debuggen Ihres Benutzerdatenskripts helfen könnte, wenn es beim ersten Mal nicht funktioniert: http://alestic.com/2010/12/ec2-user-data-output


9
2018-03-15 01:34



Offtopic, aber danke, dass Sie so ein unschätzbares schaffen. Drei mal hurra. - danieljimenez