【发布时间】:2017-04-24 02:54:23
【问题描述】:
我想用 Terraform 定义的单个 us-east-2 VPC 中有一组 AWS 安全组。已经有很多手动配置的安全组了。
如果我使用新配置创建计划,是否会删除旧服务组?如果是这样,有没有办法排除现有资源?
【问题讨论】:
标签: amazon-web-services terraform
我想用 Terraform 定义的单个 us-east-2 VPC 中有一组 AWS 安全组。已经有很多手动配置的安全组了。
如果我使用新配置创建计划,是否会删除旧服务组?如果是这样,有没有办法排除现有资源?
【问题讨论】:
标签: amazon-web-services terraform
Terraform 尽一切可能尝试不干扰它无法管理的任何事情。通常这只会是 Terraform 已经创建并在其 state file 中创建的东西,但现在这也可以包含在 Terraform 之外创建的东西,然后将 imported 包含到状态文件中。
如果您的资源具有某种形式的可由您自己配置的唯一标识符(例如 ELB 的名称),Terraform 将不会意识到存在问题并计划创建所述资源。在实际应用期间,提供者(例如 AWS)应该返回一个错误,说明资源已经存在,但这在技术上取决于提供者的 API,并且可能某些提供者可能会进行更新。在您的情况下,您使用的是 AWS,因此 AWS API 将返回一个错误,说明资源已存在。
如果资源由您无法控制的事物(例如 EC2 实例和安全组)唯一标识,则 Terraform 将简单地创建更多该资源并简单地标记它们。
因为 Terraform 标识了它的状态文件允许管理的东西,这就是为什么照顾这个状态文件并确保它始终可供任何人/任何将运行 Terraform 的东西使用,因此应该使用remote state 允许共享这些状态文件。
【讨论】: