Openstack (essex) とHeatを使用してローカル クラウド環境をセットアップしました。しかし、インスタンスの最初の起動時に追加のファイル/パッケージを追加したいという問題に直面しています。私の知る限り、これはAWS::CloudFormation::Initで実行できます。
しかし、実行して新しいインスタンスを生成するとき
heat create test --template-file=test.template
次の最小限のテンプレートを使用
{
"AWSTemplateFormatVersion": "2010-09-09",
"Description": "Create and provision a web server",
"Resources": {
"NewServer": {
"Type": "AWS::EC2::Instance",
"Properties": {
"ImageId": "fedora18ami_neu",
"InstanceType": "m1.large",
"KeyName": "poc",
"UserData": {
"Fn::Base64": "#!/bin/sh\n/opt/aws/bin/cfn-init -s test--region RegionOne -r NewServer\n"
}
},
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"packages": {
"yum": {
"httpd": []
}
}
}
}
}
}
}
}
エラーが発生しました:
File "/usr/lib/python2.7/site-packages/cfnbootstrap/aws_client.py", line 149, in sign
derived_key = hmac.new(("AWS4" + creds.secret_key).encode('utf-8'), timestamp_short.encode('utf-8'), hashlib.sha256).digest()
TypeError: cannot concatenate 'str' and 'NoneType' objects
cfn-init が何らかの Amazon クラウド サービスに接続しようとしているようで、アクションを実行するには資格情報が必要です!? Amazon サービスに接続する必要があるのはなぜですか?また、それを回避する可能性はありますか? または、 AWS::CloudFormation::Initの機能をテンプレートに実装する別の方法はありますか? UserData-Element ですべてを Shellscript として宣言する必要がありますか?
助けてくれてありがとう!