Json cloudformation启动实例后,用户数据未被执行

Json cloudformation启动实例后,用户数据未被执行,json,amazon-web-services,amazon-cloudformation,user-data,Json,Amazon Web Services,Amazon Cloudformation,User Data,我创建了一个AWS cloudformation,它创建了一个启动配置和一个自动缩放组。在启动配置中的用户数据中,我配置了文件系统装载目标,并安装了cloudwatch代理: 已编辑代码 图像详细信息:“eu-west-1”:{“AMIID”:“ami-ba346ec9”}, 运行模板后,成功创建了资源。因此,我连接到autoscaling组通过SSH创建的实例,以查看userData是否正确运行和设置。 不幸的是,在检查之后,我在/etc/fstab文件中发现了以下内容: $ cat /

我创建了一个AWS cloudformation,它创建了一个启动配置和一个自动缩放组。在启动配置中的用户数据中,我配置了文件系统装载目标,并安装了cloudwatch代理:

已编辑代码

图像详细信息:
“eu-west-1”:{“AMIID”:“ami-ba346ec9”},

运行模板后,成功创建了资源。因此,我连接到autoscaling组通过SSH创建的实例,以查看userData是否正确运行和设置。 不幸的是,在检查之后,我在/etc/fstab文件中发现了以下内容:

   $ cat /etc/fstab
   LABEL=cloudimg-rootfs    /    ext4   defaults,discard    0 0


   $ cat /etc/ecs/ecs.config
   cat: /etc/ecs/ecs.config: No such file or directory
该实例未连接到
文件系统
,我试图在
cloudformation::init
中创建的文件也不存在(它是
cloudwatch代理
config文件)。有谁能告诉我用户数据中有什么错误没有被执行

我试图检查日志文件,但:

$ cat /var/log/cfn-init.log 
cat: /var/log/cfn-init.log: No such file or directory
这里有什么问题

编辑

$cat/var/log/cloud-init-output.log
...
云初始化v。0.7.6在2017年2月17日星期五11:43:42+0000运行“模块:最终版”。上升44.66秒。
+yum安装-y aws cfn bootstrap/opt/aws/bin/cfn init-v--stack Mystack--resource LaunchConfig--region eu-west-1
加载“优先级”插件
加载“更新motd”插件
配置时间:0.009
命令行错误:没有这样的选项:-堆栈
二月17日11:43:43云初始化[2814]:util.py[警告]:无法运行/var/lib/cloud/instance/scripts/part-001[1]
二月17日11:43:43云初始化[2814]:cc_scripts_user.py[警告]:无法运行模块脚本用户(脚本位于/var/lib/cloud/instance/scripts)
二月17日11:43:43云初始化[2814]:util.py[警告]:运行模块脚本用户()失败
云初始化v。0.7.6于2017年2月17日星期五11:43:43+0000完成。数据源数据源EC2。上升45.18秒

用户数据日志文件位于:

  • Linux云初始化:
    /var/log/cloud init.log
  • Windows EC2Config:
    C:\cfn\log\cloud init.log

检查日志文件中是否有任何内容。如果没有,那么从模板传递用户数据脚本就有问题。(为什么在连接中有初始的空引号?

cfn init
仅在默认情况下安装在Amazon Linux AMI上,因此如果您使用任何其他映像ID启动EC2实例,则需要确保在调用它之前正确安装它。有关更多信息,请参见我的问题“”。

以下是我如何解决问题的:我在调用元数据之前更新了用户数据中的cloud init,而不是在元数据中安装cloudwatch代理,而是在用户数据中进行了更新

          "UserData":{  "Fn::Base64" : {
            "Fn::Join" : ["", [
              "#!/bin/bash -xe\n",
              "yum -y install aws-cfn-bootstrap\n",
              "/opt/aws/bin/cfn-init -v",
              "         --stack ", { "Ref": "AWS::StackName" },
              "         --resource LaunchConfig",
              "         --region ", { "Ref" : "AWS::Region" },"\n",
              "# Get the CloudWatch Logs agent\n",
              "wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py\n",
              "# Install the CloudWatch Logs agent\n",
              "python ./awslogs-agent-setup.py -n -r ", { "Ref" : "AWS::Region" }, " -c /etc/cwlogs.cfg || error_exit 'Failed to run CloudWatch Logs agent setup'\n",
              "service awslogs start"
          ]]}

最初的空引号是delimeter。它是空的,因为我在用户数据脚本中不需要它。只是检查了
/var/log/cloud init.log
在那里的用户数据中找不到任何东西。您的用户数据格式。您需要进行一些测试,以了解用户数据未运行的原因。尝试一个简单的版本,只向
/tmp/test
文件写入一些文本。@wjordan还提出了一个问题——您使用的是标准的AmazonLinuxAMI吗?看起来你用的是ubuntu,在Linux2AMI的新映像中,/var/log/cloud-init.log存在。在我的特殊情况下,我对脚本有一些问题。您可以在lib instance文件夹中运行脚本。脚本的内容在那里,你可以在机器上运行它。很好的发现!用户数据似乎在Ubuntu云映像上,但不是
cfn init
。在创建ECS集群时,我将AMI映像更改为Linux ECS优化的映像。我增强了模板,因为我意识到我忘记了一些重要的命令。但一切都没有改变。我真的疯了,我尝试了@wjordan solution的所有方法,通过保留ubuntu映像和添加
cfn init
安装;但仍然没有好的结果。另一个简单的测试,我检查了是否安装了
nfs utils
软件包:
rpm-q nfs utils le paquet nfs utils n'est pas installé
它说没有,我还尝试在
/opt/aws/bin/cfn init
中向用户数据添加accessKey和sercretKey,但它不起作用。我还在努力@从
+yum安装-y aws cfn bootstrap/opt/aws/bin/cfn init-v--stack Mystack--resource LaunchConfig--region eu-west-1
行判断,在
cloud init output.log
输出中,您似乎忘记了在
yum安装-y aws cfn bootstrap
和其他命令之间添加新行。
$ cat /var/log/cloud-init-ouput.log
...

Cloud-init v. 0.7.6 running 'modules:final' at Fri, 17 Feb 2017 11:43:42 +0000. Up 44.66 seconds.
+ yum install -y aws-cfn-bootstrap/opt/aws/bin/cfn-init -v --stack Mystack --resource LaunchConfig --region eu-west-1
Loading "priorities" plugin
Loading "update-motd" plugin
Config time: 0.009
Command line error: no such option: --stack
Feb 17 11:43:43 cloud-init[2814]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [1]
Feb 17 11:43:43 cloud-init[2814]: cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts)
Feb 17 11:43:43 cloud-init[2814]: util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python2.7/dist-packages/cloudinit/config/cc_scripts_user.pyc'>) failed
Cloud-init v. 0.7.6 finished at Fri, 17 Feb 2017 11:43:43 +0000. Datasource DataSourceEc2.  Up 45.18 seconds
          "UserData":{  "Fn::Base64" : {
            "Fn::Join" : ["", [
              "#!/bin/bash -xe\n",
              "yum -y install aws-cfn-bootstrap\n",
              "/opt/aws/bin/cfn-init -v",
              "         --stack ", { "Ref": "AWS::StackName" },
              "         --resource LaunchConfig",
              "         --region ", { "Ref" : "AWS::Region" },"\n",
              "# Get the CloudWatch Logs agent\n",
              "wget https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py\n",
              "# Install the CloudWatch Logs agent\n",
              "python ./awslogs-agent-setup.py -n -r ", { "Ref" : "AWS::Region" }, " -c /etc/cwlogs.cfg || error_exit 'Failed to run CloudWatch Logs agent setup'\n",
              "service awslogs start"
          ]]}