我有一个Terraform文件,可在Azure上创建资源组,存储帐户,存储共享,数据库和VM。我建议的用例是,在生产中,一旦创建了资源组,存储帐户,存储共享和数据库,它们就应该保留在原处。但是,在某些情况下,可能需要销毁VM,并使用不同的规格重新创建VM。我知道我可以运行一次文件以创建所有内容,然后污染VM并使用Apply重新创建它们,但这似乎不是理想的方法。
答案 0 :(得分:0)
在常规使用中,应通过更改配置来更改基础结构,而不是通过运行命令terraform taint
之类的命令。如果您更改了有关需要创建虚拟机的虚拟机配置的某些信息,则底层提供程序应制定一个计划,以自动替换该对象,而其他对象则保持不变。
当您有不同的对象需要以不同的节奏变化时-尤其是当其中一些是有状态的对象(如数据库)时-在Terraform中建模的一种好方法是将问题分解为多个单独的Terraform配置。您可以在一种配置中使用数据源来检索有关在另一种配置中创建的对象的信息。
分成至少两个单独的配置意味着可以降低在其中一个上运行terraform apply
的风险,因为它可以采取的操作范围仅在于在该特定配置中管理的对象上。尽管原则上您可以仔细查看Terraform计划,以查看何时计划进行有害的更改,但拆分为多个配置是许多团队用来减少人为错误可能造成的影响的额外保险。