一次应用一个Terraform模块

SSF*_*SSF 2 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
            ...
Run Code Online (Sandbox Code Playgroud)

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

我正在尝试一次更新一个模块的状态(例如app1.tf)。我不确定该怎么做。

用例:我只希望将模块的LC之一更新为使用最新的AMI或安全组。

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

terraform plan -target=app1.tf
terraform apply -target=app1.tf
Run Code Online (Sandbox Code Playgroud)

因此,不进行任何更改。我相信这是Terraform 的错误

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

yda*_*coR 7

Terraform -target仅应用于特殊用例,使用它时您应该真正知道自己在做什么。如果确实需要一次定期针对不同的部分,则应将应用程序分为不同的目录,以便一次轻松地应用整个目录。

这可能意味着您需要使用数据源或重新考虑事物的结构,但是这也意味着您会限制总是有用的任何Terraform动作的爆炸半径。