【问题标题】:Terraform conditional creationTerraform 条件创建
【发布时间】:2020-07-16 21:37:21
【问题描述】:

我有一个 Terraform 文件,可以在 Azure 上创建资源组、存储帐户、存储共享、数据库和 VM。我建议的用例是,在生产环境中,一旦创建了资源组、存储帐户、存储共享和数据库,它们就应该保留在原处。但是,在某些情况下,可能需要销毁并使用不同规格重新创建 VM。我知道我可以运行一次文件来创建所有内容,然后污染虚拟机并使用应用重新创建它们,但这似乎不是理想的方法。

【问题讨论】:

  • 为什么不呢?这就是 terraform 的计划,如果您想更改特定资源,您可以在不破坏其他资源的情况下更改它
  • 您是在问一种方式,Terraform 发现缺少的组件并且不触及有条件创建的资源吗?
  • @BerkhanBerkdemir 是的。我的想法是,如果计划运行,而不是在资源已经存在时生成错误,它会简单地跳过创建步骤。但是,我读过一些建议,认为这种方法与 TF 是事实来源的想法相反。
  • 我会说 Terraform 是用于此目的的错误工具。不过,因为不了解Azure,可能我错了,不想给大家指错。

标签: terraform terraform-provider-azure


【解决方案1】:

在常规使用中,应通过更改配置来更改基础架构,而不是通过运行像 terraform taint 这样的命令式命令。如果您更改了需要创建 VM 的配置,那么底层提供者应该制定一个计划来自动替换该对象,而其他对象保持不变。

当您有不同的对象需要以不同的节奏进行更改时——尤其是当其中一些是有状态的对象(如数据库)时——在 Terraform 中对此进行建模的一个好方法是将问题分解为多个单独的 Terraform 配置。您可以在一种配置中使用数据源来检索有关在另一种配置中创建的对象的信息。

拆分为至少两个单独的配置意味着可以降低在其中一个上运行terraform apply 的风险,因为它可以采取的操作范围仅针对在该特定配置中管理的对象。虽然原则上您可以仔细查看 Terraform 计划,看看它计划何时进行有害的更改,但拆分为多个配置是许多团队用来减少人为错误可能影响的额外保险。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 2019-08-04
    • 2021-06-05
    • 2018-06-26
    • 2017-02-12
    • 2020-12-26
    • 2019-10-20
    相关资源
    最近更新 更多