gpt4 book ai didi

amazon-web-services - 如何部署特定的 tf 文件 (Terraform)

转载 作者:行者123 更新时间:2023-12-04 01:43:02 24 4
gpt4 key购买 nike

我的 terraform 根目录中有 3 个 .tf 文件:

  • vpc.tf
  • 子网.tf
  • 实例.tf
  • 在运行 terraform init 后连同 .terraform 目录

我只想部署运行类似以下内容的 vpc.tf:

terraform apply vpc.tf #here, vpc.tf is a terraform file

但它不起作用(我收到 Go 错误:“zip:不是有效的 zip 文件”)。如果我只是跑

terraform apply

它将尝试在所有 3 个地形文件(vpc.tf、subnets.tf 和 instances.tf)中应用所有配置,这不是我想要的。似乎让这个工作的方法是,有一个完全不同的文件夹,然后运行类似的东西

terraform apply vpc/ #here, vpc/ is a folder that containers vpc.tf file

哪个有效。这种方法的问题是,如果我在 vpc/文件夹中有 2 个或更多 terraform 文件,我会再次回到第一个问题。解决方案似乎是在特定文件夹中拥有特定资源,但这似乎并不干净,因为我可以预见如果基础设施增长,我最终会得到几个包含一些 terraform 文件的文件夹。所以问题是:

有没有办法“应用”特定的地形文件,并忽略文件夹中的所有其他文件?我是否遗漏了有关 Terraform 的一些基本知识?

最佳答案

虽然您可以使用 -target,如 manojlds' answer 中所述每次都针对特定资源进行运行,这意味着当您遇到奇怪的事情并且需要忽略将应用于该区域其他资源的更改时,这是一个逃生口。

这是在Terraform documentation for -target中直接提到的:

This targeting capability is provided for exceptional circumstances, such as recovering from mistakes or working around Terraform limitations. It is not recommended to use -target for routine operations, since this can lead to undetected configuration drift and confusion about how the true state of resources relates to configuration.

相反,您应该考虑您愿意将哪些内容作为一个集合来更改,并将应该作为一个单元更改的 .tf Terraform 文件放在同一目录中,并为它们使用相同的状态文件.

如果您不希望同时更改两件事(例如设置 VPC 并设置位于该 VPC 中的应用程序或设置应用程序的测试和生产版本),那么这些应该是在不同的目录中并使用不同的状态文件。

这提供了一个很好的事物分离,最小化爆炸半径,但仍然可以更容易地同时应用大量相关的事物。

在您的具体情况下,我会质疑为什么您不想同时应用 VPC 和子网,因为这通常只被视为运行事物所需的基本网络配置的一部分。一起管理这些通常会很有意义,并允许您执行更改 VPC 的名称以及在同一 apply 中重命名子网等操作。

关于amazon-web-services - 如何部署特定的 tf 文件 (Terraform),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com