一次应用一个terraform模块

时间:2018-02-14 05:48:54

标签: amazon-web-services terraform

efx/
...


    aws_account/
                nonprod/
                          account-variables.tf
                          dev/
                              account-variables.tf
                              common.tf
                              app1.tf
                              app2.tf
                              app3.tf 
                              ...
    modules/
            tf_efxstack_app1
            tf_efxstack_app2
            tf_efxstack_app3
            ...

在给定的环境中(上例中的dev),我们有多个模块(app1,app2,app3等),这些模块基于我们在基础架构中运行的各个应用程序。

我试图一次更新一个模块的状态(例如app1.tf)。我不知道如何做到这一点。

使用案例:我希望只更新其中一个模块的LC以使用最新的AMI或安全组。

我在terrafrom中尝试了-target命令,但这似乎不起作用,因为它不检查terraform远程状态文件。

terraform plan -target=app1.tf
terraform apply -target=app1.tf
因此,不会发生任何变化。我相信这是一个带有地形的bug

我有什么想法可以做到这一点?

1 个答案:

答案 0 :(得分:5)

Terraform的-target应仅用于特殊用例,您应该在使用它时真正了解自己在做什么。如果您确实需要一次定期定位不同的部分,那么您应该将应用程序分成不同的目录,这样您就可以轻松地一次应用整个目录。

这可能意味着您需要使用数据源或重新考虑事物的结构,但这意味着您还要限制任何单个Terraform操作的爆炸半径,这始终是有用的。