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