我正在尝试创建一个信息模板,并在同一个文件中使用cfn-init。但我面临这个随机问题,cfn-init模块将完美地运行文件和服务配置,但命令模块中没有任何命令被执行。以下是我的模板片段。
"Metadata": {
"AWS::CloudFormation::Init": {
"config": {
"commands": {
"cloud": {
"command" : "whoami >> /home/ubuntu/blah"
},
"test" : {
"command" : "echo \"$MAGIC\" > test.txt",
"env" : { "MAGIC" : "I come from the environment!" },
"cwd" : "~",
"test" : "test ! -e ~/test.txt",
"ignoreErrors" : "false"
},
"test2": {
"command" : "whoami >> wala",
"cwd" : "/home/ubuntu"
}
},
"files": {
"/home/ubuntu/sambhav": {
"content": {
"Fn::Join": [
"",
[
"Ok Cool!!!",
"\n"
]
]
}
},
"/etc/cfn/cfn-hup.conf": {
"content": {
"Fn::Join": [
"",
[
"[main]\n",
"stack=",
{
"Ref":"AWS::StackId"
},
"\n",
"region=",
{
"Ref":"AWS::Region"
},
"\n",
"interval=2",
"\n"
]
]
},
"mode": "000400",
"owner": "root",
"group": "root"
},
"/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
"content": {
"Fn::Join": [
"",
[
"[cfn-auto-reloader-hook]\n",
"triggers=post.update\n",
"path=Resources.EC2Instance.Metadata.AWS::CloudFormation::Init\n",
"action=/usr/local/bin/cfn-init -s ",
{
"Ref":"AWS::StackId"
},
" -r EC2Instance ",
" --region ",
{
"Ref":"AWS::Region"
},
"\n",
"runas=root\n"
]
]
}
}
},
"services" : {
"sysvinit" : {
"cfn-hup" : { "enabled" : "true", "ensureRunning" : "true",
"files" : ["/etc/cfn/cfn-hup.conf", "/etc/cfn/hooks.d/cfn-auto-reloader.conf"]}
}
}
}
}
},
"Properties": {
"InstanceType": {
"Ref": "InstanceType"
},
"SecurityGroups": ["staging"],
"KeyName": {
"Ref": "KeyName"
},
"ImageId": "ami-6.....",
"Tags" : [
{"Key" : "Name", "Value" : "Staging"}
],
"UserData" : {
"Fn::Base64" : {
"Fn::Join" : [
"",
[
"#!/bin/bash \n",
"# Install cfn bootstraping tools \n",
"apt-get update \n",
"apt-get -y install python-setuptools \n",
"mkdir aws-cfn-bootstrap-latest\n",
"mkdir -p /home/ubuntu/work/projects\n",
"sudo curl https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz | tar xz -C aws-cfn-bootstrap-latest --strip-components 1 \n",
"sudo easy_install aws-cfn-bootstrap-latest \n",
"cp /usr/local/bin/cfn-hup /etc/init.d/cfn-hup \n",
"chmod +x /etc/init.d/cfn-hup \n",
"update-rc.d cfn-hup defaults \n ",
"service cfn-hup start \n",
"/usr/local/bin/cfn-init --stack ", { "Ref":"AWS::StackName" },
" --resource EC2Instance", " --region ", { "Ref": "AWS::Region" },
"\n"
]
]
}
}
}
答案 0 :(得分:0)
您提供的模板片段似乎按预期工作,文件使用适当的内容创建:
ubuntu@ip-172-31-9-151:~$ cat /home/ubuntu/*
root
Ok Cool!!!
root
cat: /home/ubuntu/work: Is a directory
检查cfn-init日志以确保正在执行命令并显示遇到的任何错误:
ubuntu@ip-172-31-9-151:~$ cat /var/log/cfn-init.log
2015-10-18 05:37:49,087 [INFO] -----------------------Starting build-----------------------
2015-10-18 05:37:49,300 [INFO] Running configSets: default
2015-10-18 05:37:49,300 [INFO] Running configSet default
2015-10-18 05:37:49,301 [INFO] Running config config
2015-10-18 05:37:49,306 [INFO] Command cloud succeeded
2015-10-18 05:37:49,310 [INFO] Command test succeeded
2015-10-18 05:37:49,313 [INFO] Command test2 succeeded
2015-10-18 05:37:49,323 [INFO] enabled service cfn-hup
2015-10-18 05:37:49,420 [INFO] Restarted cfn-hup successfully
2015-10-18 05:37:49,421 [INFO] ConfigSets completed
2015-10-18 05:37:49,427 [INFO] -----------------------Build complete-----------------------