我正在研究使用cfn-init和userdata之间的区别。我从各种文档中了解到,使用cfn-init,对堆栈进行的更改不会替换ec2实例,而只会将配置更改更新为现有的ec2实例。
有人可以澄清文档在此处指的是哪种类型的配置更改?
我在云形成模板中使用 AWS :: CloudFormation :: Init 来安装软件以及创建新文件和服务。堆栈成功运行,没有任何问题,所有软件和服务都已安装。
当我尝试在 AWS :: CloudFormation :: Init 部分中创建新文件并更新堆栈时,不会创建新文件。
下面是添加到CFT模板中的新内容。
"/tmp/hello.html":
content:
Fn::Join:
- ''
- - "#!/bin/bash \n"
- "Checking if this file is created \n"
mode: '000755'
owner: root
group: root
我希望将创建新文件,但我看不到它已创建。因此,cfn-init可以检测并应用哪些更改?
答案 0 :(得分:0)
cfn-init
有效地更改了Amazon EC2实例上的“用户数据”字段。
通过用户数据提供的脚本仅在首次启动实例时执行。 (正式地,“每个实例ID一次”)。
因此,在CloudFormation模板中更改用户数据将不会影响任何正在运行的实例。要使其运行,需要创建一个新实例。
AWS::EC2::Instance - AWS CloudFormation文档说,可以通过“一些中断”来更新用户数据。但是,这不会触发新脚本的执行。
您将需要尝试找出更改cfn-init
配置时如何强制创建新实例的方法。它可能可能创建一个新实例。如果没有,您将需要找出一种强制它发生的方法,例如更改确实存在的其他属性会导致实例被替换。