Cloudformation init不会执行命令但会创建文件

时间:2015-08-03 13:25:32

标签: amazon-web-services amazon-cloudformation

我正在尝试创建一个信息模板,并在同一个文件中使用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"
          ]
        ]
      }
    }
  }

1 个答案:

答案 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-----------------------