AWSサービスは初めてです。 AWSクラウドフォーメーションを使用しようとしていますが、テンプレートを作成しました。テンプレートにはエラーがなく、それを使用してマシンを作成できます。
しかし、起動時にTomcat、gitなどをインストールするように、テンプレートにいくつかの設定を追加しました。しかし、それは私には起こりません。
以下は、Tomcatのインストールに使用したコードの一部です。
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"Tomcat6": [],
"git": [],
}
}
}
}
},
しかし、マシンにログインすると、Tomcat
もgit
もインストールされていません。
前もって感謝します。
ここでの問題は、cloud-initがcfn-initと同じではないことの混乱だと思います。
cloud-init は、Ubuntu AWS AMIの一部として開始されたツールであり、インスタンスメタデータのEC2ユーザーデータコンポーネントの解釈を可能にします。 Amazon Linuxもこのツールを採用し、AMIに組み込みました。
cfn-init は、AWSによって作成されたCloudFormation Helper Scriptsと呼ばれる別のツールセットの一部です Amazon Linux = CloudFormationテンプレートのMetadata
という名前の追加セクションを読み取ることができます。
したがって、UbuntuとAmazon Linux AMIのどちらにも、ユーザーデータにアクセスするためのcloud-initツールがプリインストールされていますが、Amazon Linuxのみ CloudFormation Helper Scripts がプリインストールされています。 CloudFormationメタデータにアクセスするためのcfn-init。
ただし、AWSはCloudFormationメタデータの読み取りに使用できる distribute packages を実行します。具体的には、この テンプレート を見て、cloud-initユーザーデータスクリプトを使用してpython-setuptoolsをインストールし、CloudFormationヘルパースクリプトをダウンロードして、easy_installを使用してインストールし、cfn-initを呼び出します。
注:cloud-initまたはcfn-initをサポートする可能性のある他のディストリビューションまたはAMIがありますが、ここでは一般的なケースについてのみ説明します。
インスタンスのUserDataプロパティ内でcfn-init( http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html )を呼び出す必要があります。
{
"Resources": {
"Tomcat": {
"Type": "AWS::EC2::Instance",
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"apt": {
"Tomcat6": [],
"git": []
}
}
}
}
},
"Properties": {
"UserData": {
"Fn::Base64": {
"Fn::Join": ["", [
"#!/bin/bash\n",
"/opt/aws/bin/cfn-init -s ", {
"Ref": "AWS::StackName"
},
" -r Tomcat",
" --region ", {
"Ref": "AWS::Region"
}, "\n"
]]
}
}
}
}
}
}
UserDataプロパティはBase64でエンコードされており、インスタンスの起動時に実行するスクリプトを指定できます。ここでは、CloudFormation :: Initメタデータを読み取り、そこで指定されているすべてをセットアップするcfn-initを呼び出すことができます。
また、CFスタックを作成するときは、2番目のページ(パラメーターを指定した後)で詳細設定に進み、[エラー時にロールバック]が[いいえ]に設定されていることを確認します。このようにして、何らかの理由でcfn-initスクリプトが失敗した場合は、インスタンスにsshして、/ var/log/cfn-init.logファイルで詳細を確認できます。
上記の答えは正しいです。ただし、CloudFormationヘルパースクリプトが正常にインストールされていることも確認する必要があります。インストールの詳細については、 http://docs.aws.Amazon.com/AWSCloudFormation/latest/UserGuide/cfn-helper-scripts-reference.html に従ってください。