【问题标题】:Is `terraform init` compulsory before every `terraform plan`?在每个 `terraform plan` 之前必须执行 `terraform init` 吗?
【发布时间】:2022-02-16 15:11:47
【问题描述】:

只是想知道terraform init 在每个terraform plan 之前是否是必填项?

即如果我已经完成了terraform init,但即将根据一些更改的 Terraform 代码进行第二次terraform plan,您是否需要再进行一次terraform init

【问题讨论】:

    标签: terraform


    【解决方案1】:

    视情况而定。

    根据您更改的 Terraform 代码的具体内容,您可能需要重新运行 init。例如,如果您对已配置的后端进行了更改,则需要重新运行 terraform init 以使用这些更改重新初始化。如果更改是针对脚本的非 terraform 配置部分,terraform planterraform apply 应该可以单独使用。

    另外需要注意的是,如果您正在使用模块,并且您在模块中进行了更改,则需要在运行 planapply 之前重新运行 terraform get -update 以获取这些更改。

    【讨论】:

    • 在即将发布的 0.10 版本中,init 命令具有安装提供程序插件的额外责任,因此为新提供程序添加第一个资源将是重新运行它的进一步原因。跨度>
    • 如他们的blog post 所述。
    • @James Thorpe 您能否详细说明您使用的术语“已配置后端”和“非 terraform 配置部分”
    【解决方案2】:

    同意以上所有答案,但这里要补充一点,即使没有任何变化,多次运行 terraform init 也是安全的,它不会影响任何事情。

    【讨论】:

      【解决方案3】:

      视情况而定。terraform init 命令用于初始化包含 Terraform 配置文件的工作目录。如果您没有更改 terraform 配置(可以说的关键字),则无需发出 terraform init。相反,您可以 terraform planterraform apply。通常 terraform 告诉,如果 terraform 需要由消息初始化

      【讨论】:

        【解决方案4】:

        terraform init 运行状态取决于发生了什么变化,以防插件或后端配置发生变化。 多次运行此命令始终是安全的,以使工作目录随着配置的更改而更新。虽然后续运行可能会出错,但此命令永远不会删除您现有的配置或状态。

        因此,您可以在每次运行 terraform plan 时运行 init 以保持最新状态。 如果没有变化,则跳过它。 但是,如果有多个人在处理该项目并且您将状态存储在某个地方,那么请始终在运行 terraform plan 之前运行 terraform init

        【讨论】:

          猜你喜欢
          • 2018-11-28
          • 2021-10-15
          • 1970-01-01
          • 2018-11-21
          • 1970-01-01
          • 1970-01-01
          • 2021-07-22
          • 1970-01-01
          • 2021-09-28
          相关资源
          最近更新 更多