【问题标题】:Cloudformation init doesn't execute commands but creates filesCloudformation init 不执行命令但创建文件
【发布时间】:2015-10-18 13:45:48
【问题描述】:

我正在尝试创建一个 canformation 模板,并在其中使用 cfn-init。但是我遇到了这个随机问题,cfn-init 模块可以完美地运行文件和服务配置,但没有执行命令模块中的任何命令。以下是我的模板的 sn-p。

"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"
          ]
        ]
      }
    }
  }

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    您提供的模板 sn-p 似乎按预期工作,创建的文件具有适当的内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 2022-06-20
      • 2021-12-13
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      相关资源
      最近更新 更多