【发布时间】:2021-01-21 19:26:51
【问题描述】:
您可能不明白我在问题中要表达的意思。在陈述问题之前,我先举个例子来进一步理解。
我们以 terraform 为例。
假设我们使用 terraform 在aws 中启动一个 EC2 实例。因此,我们目前正在本地存储状态。假设我们需要将tag 添加到ec2 实例。
所以我们要做的是,添加这个小块来实现这一点。
tags = {
Name = "HelloWorld"
}
没什么复杂的,就是这么简单。因此,当我们添加标签时,terraform 将查找状态中的任何更改,当它发现已添加标签时,它会运行并且仅添加标签,而不重新创建整个实例。 (可能还有其他需要重新创建实例的情况,但我们暂时先不考虑)
所以,正如我所提到的,terraform 不会重新创建实例来添加标签。如果我们想添加另一个标签,它将添加标签而不重新创建实例。就这么简单。
不管我们运行terraform apply 多少次,它都不会对现有资源进行任何更改,除非我们在 terraform 文件中进行任何更改。
那么,现在让我们来看看真正的问题。
假设我们要使用ansible 安装httpd。所以我写了ansible剧本。它将使用yum 包并安装,然后启动并启用该服务。
好吧,就这么简单。
假设我们第二次运行同一个 playbook,现在将尝试从头开始执行相同的命令,而不先检查它之前是否执行过这个 playbook?
我有几次尝试安装一些服务的经历,当我尝试再次执行相同的剧本时,它失败了。
是否可以像我们在terraform 中一样保留ansible 中的状态,以便它始终只执行较新的更改,而不是在第二次运行时从头开始执行?? p>
【问题讨论】: