在Terraform状态文件中,以下是针对OpenStack的.tfstate文件部分(该部分使用AWS API,因此AWS是提供者):
currentTime
说我在控制台中手动删除实例/资源。 我的Terraform配置可以通过以下方式更改:Terraform Plan可以触发 i)重新创建(+/-)或 ii)销毁(-)和创建/添加(+)。
问题是:在两种情况下,创建的新节点是否都具有与状态文件中以前相同的“ id”属性?
换句话说,"aws_instance.7.3"
"primary": {
"attributes": {
"id": "6b646e50-..."
属性(在GCP的情况下为"id"
)在基础架构的整个生命周期中始终是唯一的吗?
(这样一来,当将旧的tfstate文件和新的tfstate文件与"instance_id"
或"id"
属性进行比较时,可以肯定地创建/重新创建了一个新节点,并确保.tfstate反映了发生在计划。)
我检查.tfstate是否反映了计划(创建/重新创建/销毁的确切数目)的原因是,尽管“应用”是根据“计划”发生的,但有时.tfstate并不反映出
这样做的原因是,在“应用”之后,terraform似乎执行了 GET调用提供程序以更新.tfstate文件和此GET调用 有时会返回基础架构的不一致状态(即 即使节点已创建并且是节点的一部分,也不会返回节点的详细信息 基础架构!)。
在那种情况下,我必须在我们的自动化工具中告知.tfstate并未按照计划进行,因此.tfstate文件中可能存在损坏/不一致的问题,可以通过手动导入对其进行修复。
答案 0 :(得分:0)
EC2 instance id
是唯一的。从下面的参考中:
创建资源后,我们为每个资源分配一个唯一的资源ID。
新ID的格式为17个字符,例如,实例ID为i-1234567890abcdef0。
具有16 ^ 17种可能的组合意味着您不太可能重复输入数字。如果您每天创建十亿个实例,则大约需要295147905179天才能重复编号。
参考: