Ich bin sehr neu in den AWS-Diensten. Ich versuche, die AWS-Wolkenformation zu verwenden, und habe eine Vorlage erstellt. Die Vorlage ist fehlerfrei und ich kann damit Maschinen erstellen.
Ich habe der Vorlage jedoch eine Konfiguration hinzugefügt, mit der Tomcat, Git und andere Dinge während des Startvorgangs installiert werden. Das passiert mir aber nicht.
Hier ist ein Teil des Codes, den ich für die Installation von Tomcat verwendet habe:
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"tomcat6": [],
"git": [],
}
}
}
}
},
Aber wenn ich mich in die Maschine einlogge tomcat
noch git
installiert habe!
Danke im Voraus.
Antworten:
Ich glaube, Ihr Problem hier ist die Verwirrung darüber, dass Cloud-Init nicht mit CFN-Init identisch ist.
cloud-init ist das Tool, das im Rahmen der Ubuntu AWS-AMIs gestartet wurde und die Interpretation der EC2-Benutzerdatenkomponente der Instanz-Metadaten ermöglicht. Amazon Linux hat dieses Tool ebenfalls übernommen und in sein AMI integriert.
cfn-init ist Teil eines anderen Toolsets namens CloudFormation-Hilfsskripts, das von AWS für Amazon Linux erstellt wurde und einen zusätzlichen Abschnitt
Metadata
in Ihrer CloudFormation-Vorlage lesen kann .Daher sind auf Ubuntu- und Amazon Linux-AMIs die Cloud-Init-Tools für den Zugriff auf die Benutzerdaten vorinstalliert, aber nur auf Amazon Linux sind die CloudFormation-Hilfsskripts vorinstalliert, z. B. cfn-init, um auf die CloudFormation-Metadaten zuzugreifen.
AWS verteilt jedoch Pakete , mit denen Sie die CloudFormation-Metadaten lesen können. In dieser Vorlage erfahren Sie insbesondere, wie Sie mithilfe eines Cloud-Init-Benutzerdatenskripts Python-Setuptools installieren, die CloudFormation-Hilfsskripts herunterladen, mit easy_install installieren und dann cfn-init aufrufen können.
Hinweis: Es gibt andere Distributionen oder AMIs, die möglicherweise cloud-init oder cfn-init unterstützen, aber ich beschreibe hier nur die allgemeinen Fälle.
quelle
Sie müssen cfn-init ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ) in der UserData-Eigenschaft der Instanz aufrufen:
Die UserData-Eigenschaft ist Base64-codiert und ermöglicht die Angabe eines Skripts, das beim Start der Instanz ausgeführt werden soll. Hier können Sie cfn-init aufrufen, das die CloudFormation :: Init-Metadaten liest und alle dort angegebenen Einstellungen vornimmt.
Wenn Sie den CF-Stack erstellen, möchten Sie möglicherweise auf der zweiten Seite (nach Angabe der Parameter) die erweiterten Einstellungen aufrufen und sicherstellen, dass Rollback on error auf "No" gesetzt ist. Wenn das Skript cfn-init aus irgendeinem Grund fehlschlägt, können Sie ssh auf die Instanz ausführen und in der Datei /var/log/cfn-init.log nach weiteren Informationen suchen.
quelle
Die obige Antwort ist richtig. Sie sollten jedoch auch sicherstellen, dass die CloudFormation-Hilfsskripts erfolgreich installiert wurden. Weitere Informationen zur Installation finden Sie unter http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html .
quelle
quelle