想知道在每次执行terraform plan
之前是否都必须要执行terraform init
?
也就是说,如果我已经执行了terraform init
,而现在又要基于一些更改过的Terraform代码执行第二个terraform plan
,那么是否需要再次执行terraform init
?
想知道在每次执行terraform plan
之前是否都必须要执行terraform init
?
也就是说,如果我已经执行了terraform init
,而现在又要基于一些更改过的Terraform代码执行第二个terraform plan
,那么是否需要再次执行terraform init
?
这要看情况。
根据你修改的Terraform代码的具体内容,你 可能 需要重新运行init。例如,如果你对配置好的后端做了修改,你需要重新运行terraform init
以便用这些更改重新初始化。如果更改是针对脚本中非terraform配置部分的,则只使用terraform plan
和terraform apply
即可。
另外需要说明的一点是,如果你正在使用模块,并且在一个模块中进行了修改,那么你需要在运行plan
或apply
之前重新运行terraform get -update
以获取这些更改。
同意以上所有答案,但是这里还有一些需要补充的内容,即使没有任何变化,多次运行terraform init也是安全的,不会影响任何东西。
terraform init
运行的状态取决于插件或后端配置是否有更改。这个命令可以安全地多次运行,以使工作目录与配置中的更改保持同步。尽管后续运行可能会产生错误,但此命令不会删除现有的配置或状态。
因此,您可以在每次运行terraform plan
时运行init以保持更新。如果没有更改,则可以跳过它。但是,如果有多个人在项目上工作,并且您正在某个位置存储状态,则始终在运行terraform plan
之前运行terraform init
。
这取决于具体情况。 terraform init
命令用于初始化包含 Terraform 配置文件的工作目录。如果您没有更改 Terraform 配置(可以说是关键字),则不需要发出 terraform init
命令。相反,您可以使用 terraform plan
和 terraform apply
命令。通常,Terraform 会通过消息告诉您是否需要初始化。
init
命令将额外负责安装提供者插件,因此添加新提供者的第一个资源将是重新运行该命令的另一个原因。 - Martin Atkins