it-swarm.com.de

Wie kann man cloud-init manuell ausführen?

Ich schreibe eine CloudFormation-Vorlage und versuche, das Benutzerdatenskript zu debuggen, das ich in der Vorlage bereitstelle. Wie kann ich den cloud-init manuell ausführen und die gleichen Aktionen ausführen wie beim Starten einer neuen Instanz?

27
Fluffy

Sie können es einfach so ausführen:

/usr/bin/cloud-init -d init

Dadurch wird das Cloud-Init-Setup mit den ursprünglichen Modulen ausgeführt. (Die Option -d ist für Debugging.) Wenn Sie alle Module ausführen möchten, müssen Sie Folgendes ausführen:

/usr/bin/cloud-init -d modules

Denken Sie daran, dass das zweite Mal, wenn Sie diese ausführen, nicht viel tut, da es bereits beim Booten ausgeführt wurde. Um zu erzwingen, dass nach der Startzeit ausgeführt wird, können Sie von der Befehlszeile aus ausführen:

( cd /var/lib/cloud/ && Sudo rm -rf * )

In älteren Versionen entspricht cloud-init init:

/usr/bin/cloud-init start

Diese Frage kann auch hilfreich sein, obwohl sie für ältere Versionen von cloud-init gilt: Wie kann ich Cloud-init-Startskripts bei jedem Start meiner EC2-Instanz ausführen lassen?

Die Dokumentation zu cloud init hier enthält nur Beispiele. Es werden jedoch nicht die Befehlszeilenoptionen oder die einzelnen Module erläutert. Sie müssen also mit verschiedenen Werten in der Konfiguration herumspielen, um die gewünschten Ergebnisse zu erhalten. Natürlich können Sie sich auch den Code ansehen.

31
Rico

Bei den meisten Linux-Distributionen (einschließlich CentOS und Ubuntu) können Sie den Cloud-Init-Dienst mithilfe von systemctl neu starten:

systemctl restart cloud-init

Überprüfen Sie dann die Ausgabe des Journals, um die Ergebnisse zu sehen:

journalctl -f -u cloud-init
3
Andrew

Kudus an @Rico, und auch, wenn Sie ein einzelnes Modul ausführen möchten - entweder zum Testen oder weil Ihre Distribution ein Modul standardmäßig nicht aktiviert (hi Precise!), Können Sie dies tun 

/usr/bin/cloud-init -d single -n <module-name>

Wenn zum Beispiel meine Distribution write_files standardmäßig nicht startet (wie viele alte Distributionen), verwende ich dies oben in runcmd:

runcmd:
 - /usr/bin/cloud-init -d single -n write-files

[Ich weiß, dass es nicht wirklich eine Antwort auf das OP ist, aber als ich mein Problem lösen wollte, war diese Frage eines der Top-Ergebnisse. Ich denke, dass andere Leute das für nützlich halten könnten.]

2
Guss
rm -f /var/log/cloud-init.log \
&& rm -Rf /var/lib/cloud/* \
&& cloud-init -d init \
&& cloud-init -d modules --mode final
1
Sergey Safarov