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



我正在研究使用 cfn-init 和用户数据之间的区别。我从各种文档中了解到,使用 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 可以检测和应用什么样的变化?

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

通过用户数据提供的脚本仅在首次启动实例时执行。(官方为"每个实例 ID 一次"(。

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

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

您需要进行试验,以了解如何在更改cfn-init配置时强制创建新实例。它可能会创建一个新实例。如果没有,则需要找出一种方法来强制它发生,例如更改确实会导致实例被替换的另一个属性。

最新更新