Jestem bardzo nowy w usługach AWS. Próbuję użyć formacji chmury AWS i utworzyłem szablon. Szablon jest wolny od błędów i mogę z niego tworzyć maszyny.
Ale dodałem trochę konfiguracji w szablonie, tak że instaluje tomcat, git i inne rzeczy podczas uruchamiania. Ale to się nie zdarza.
Oto część kodu, którego użyłem do instalacji tomcat:
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"tomcat6": [],
"git": [],
}
}
}
}
},
Ale kiedy loguję się do komputera, ani tomcat
nie jestem git
zainstalowany!
Z góry dziękuję.
Odpowiedzi:
Uważam, że twoim problemem jest zamieszanie wokół tego, że inicjacja w chmurze nie jest tym samym, co cfn-init.
cloud-init to narzędzie, które zostało uruchomione jako część AMI Ubuntu AWS, które umożliwiają interpretację elementu danych użytkownika EC2 metadanych instancji. Amazon Linux również przyjął to narzędzie i wbudował je w AMI.
cfn-init jest częścią innego zestawu narzędzi o nazwie CloudFormation Helper Scripts utworzonego przez AWS dla Amazon Linux, który może odczytać dodatkową sekcję nazwaną
Metadata
w szablonie CloudFormation.Tak więc zarówno AMI Ubuntu, jak i Amazon Linux mają fabrycznie zainstalowane narzędzia inicjujące chmurę, aby uzyskać dostęp do danych użytkownika, ale tylko Amazon Linux ma preinstalowane skrypty pomocnicze CloudFormation, np. Cfn-init, aby uzyskać dostęp do metadanych CloudFormation.
Jednak AWS dystrybuuje pakiety , których można użyć do odczytu metadanych CloudFormation. W szczególności spójrz na ten szablon, aby dowiedzieć się, jak użyć skryptu danych użytkownika inicjującego chmurę, aby zainstalować python-setuptools, pobrać skrypty pomocnicze CloudFormation, zainstalować je za pomocą easy_install, a następnie wywołać cfn-init.
Uwaga: istnieją inne dystrybucje lub interfejsy AMI, które mogą obsługiwać chmurę init lub cfn-init, ale tutaj omawiam tylko ogólne przypadki.
źródło
Musisz wywołać cfn-init ( http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html ) we właściwości UserData instancji:
Właściwość UserData jest zakodowana w standardzie Base64 i umożliwia określenie skryptu, który należy uruchomić podczas uruchamiania instancji. Tutaj możesz wywołać cfn-init, który odczyta CloudFormation :: Init Metadata i skonfiguruje wszystko tam określone.
Również podczas tworzenia stosu CF możesz chcieć przejść do ustawień zaawansowanych na drugiej stronie (po podaniu parametrów) i upewnić się, że Cofnięcie błędu jest ustawione na „Nie”. W ten sposób, jeśli skrypt cfn-init zawiedzie z jakiegokolwiek powodu, możesz ssh w instancji i sprawdzić plik /var/log/cfn-init.log, aby uzyskać więcej informacji.
źródło
Powyższa odpowiedź jest poprawna. Ale powinieneś także upewnić się, że pomyślnie zainstalowałeś skrypty pomocnicze CloudFormation. Szczegółowe informacje na temat instalacji można znaleźć na stronie http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html .
źródło
źródło