【问题标题】:AWS cloudformation json script to run bash script on ec2 instanceAWS cloudformation json 脚本在 ec2 实例上运行 bash 脚本
【发布时间】:2021-06-02 13:23:50
【问题描述】:

我创建了一个 cloudformation 脚本,它创建了一个 ec2 实例,以及其他一些功能。初始化 ec2 实例后,我希望它自动运行 bash 脚本以将在脚本中创建的卷(不是根卷)挂载到 /var/www/vhosts。但目前它创建了目录,所以我知道它正在运行 bash 脚本,但没有成功执行其他命令。这是我的 cloudformation 脚本。当我在 ssh 到 ec2 实例时分别运行下面列出的 3 个命令时,它们工作正常并且卷已安装到正确的位置。

    "Ec2Instance": {
  "Type": "AWS::EC2::Instance",
  "Properties": {
    "ImageId": {
      "Ref": "ImageIdentification"
    },
    "AvailabilityZone" : "eu-west-1a",
    "InstanceType": {
      "Ref": "InstanceType"
    },
    "SecurityGroupIds" : [
       {
         "Ref": "SecurityGroup"
       }
    ],
    "DisableApiTermination" : "true",
    "KeyName": {
      "Ref": "keyPairName"
    },
    "Tags" : [
      {"Key" : "Name", "Value" : { "Ref" : "EC2InstanceName"}}
    ],
    "UserData" : {"Fn::Base64" : {"Fn::Join" : ["", [
     "#!/bin/bash -v\n",
      "sudo mkdir -p /var/www/vhosts\n",
      "sudo mkfs -t ext4 /dev/xvdh\n",
      "sudo mount /dev/xvdh /var/www/vhosts\n"
    ]]}}
  }
},

感谢您的帮助。

【问题讨论】:

  • 运行用户数据脚本的服务称为cloud-init。检查服务器上的 cloud-init 日志以查看问题所在:stackoverflow.com/questions/18691867/…
  • @MarkB 感谢您的帮助。这非常适合故障排除。对于正在阅读本文的任何人,我运行命令“vim /var/log/cloud-init-output.log”来查看日志。我还在 bash 脚本中添加了 sleep 命令,并在 ec2 实例中添加了 volume 属性。

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

要在 CloudFormation 中运行 bash 脚本,您需要在用户数据部分指定远程链接或在用户数据中一一记下命令。

Tags:
    - Key: Name
      Value: test
  UserData:
    Fn::Base64: !Sub |
      #!/bin/bash -xe
      cd /var/tmp
      wget https://raw.githubusercontent.com/installer/cloudformation/install.sh
      sudo bash /var/tmp/install.sh 4  '${CORE.PrivateIp}'

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 2020-01-13
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 2020-06-19
    • 1970-01-01
    相关资源
    最近更新 更多