在AWs CloudFormation模板中使用自定义的ami

时间:2016-05-30 18:01:04

标签: amazon-cloudformation

在云编队模板中使用自定义AMI时,系统可更新性检查失败,因为/ etc / sysconfig / network配置了硬编码的hosname和/ etc / sysconfig / network / ifcfg-etho具有硬编码的ip。如果我们使用Aws云形成init来改变这些值而不反映。我们如何实现这一变化?

2 个答案:

答案 0 :(得分:0)

为了使AWS::CloudFormation::Init元数据实际导致实例发生更改,您需要通过运行cfn-init帮助程序脚本来执行它。

另请注意,由于您使用的是自定义AMI,cfn-init和其他cfn-helper实用程序可能未安装 - 它们仅预装在最新的Amazon Linux AMI中,如documentation。对于Ubuntu或任何其他发行版,您需要手动安装它们,您可以通过在EC2实例的用户数据脚本中添加一行(使用Ubuntu AMI和apt-get作为示例):

UserData:
  "Fn::Base64":
    !Sub |
      #!/bin/bash -xe
      apt-get update && apt-get install pip && pip install https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz
      /usr/local/bin/cfn-init -v --stack ${AWS::StackName} --resource MyEC2Instance --configsets do_install --region ${AWS::Region}

答案 1 :(得分:0)

我看到的问题是您将网络接口设置为“STATIC”的AMI 您应该更新AMI的网络脚本以使用DHCP,这样它将从放置它的子网中获取新的IP。

就像@wjordan所说,你可以随时使用“用户数据”属性进行额外配置,并查询机器Instance MetaData查询你需要的信息IP / HOST等

http://169.254.169.254/latest/meta-data/local-ipv4