cfn-init可检测什么类型的更改?

时间:2019-08-06 23:28:33

标签: amazon-web-services amazon-cloudformation

我正在研究使用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可以检测并应用哪些更改?

1 个答案:

答案 0 :(得分:0)

cfn-init有效地更改了Amazon EC2实例上的“用户数据”字段。

通过用户数据提供的脚本仅在首次启动实例时执行。 (正式地,“每个实例ID一次”)。

因此,在CloudFormation模板中更改用户数据将不会影响任何正在运行的实例。要使其运行,需要创建一个新实例。

AWS::EC2::Instance - AWS CloudFormation文档说,可以通过“一些中断”来更新用户数据。但是,这不会触发新脚本的执行。

您将需要尝试找出更改cfn-init配置时如何强制创建新实例的方法。它可能可能创建一个新实例。如果没有,您将需要找出一种强制它发生的方法,例如更改确实存在的其他属性会导致实例被替换。