Devops terraform:.tf 文件中的后端配置与 devops 的 terraform CD 配置中的配置



使用Microsoft"terraform"任务作为CD任务,您需要设置存储帐户、容器、blob等的所有后端状态数据。当我们将所有内容都放入.tf时,为什么会这样?Azure Devops是否像标准做法一样忽略TF文件中用户定义的后端配置?

Azure Devops是否像标准做法一样忽略TF文件中用户定义的后端配置?

AFAIK,Azure Devops不会忽略TF文件中用户定义的后端配置。

Azure devops之所以需要设置所有后端状态数据,是因为Azure devop对任务采用了预编译模式。在运行任务之前,将对任务进行简短验证,例如azure订阅、资源组等。如果这些信息没有得到正确验证,azure devops将不会运行任务。这将大大提高生产效率,避免不必要的启动和使用代理。

这就是为什么Azure Devops还需要任务中的所有后端状态数据的原因。

希望这能有所帮助。

Terraform在tfstate文件中保持状态,而不是在tf中。您的代码不是您的状态。您的代码和tf文件都定义了基础设施。这是必须创建的信息。相反,tfstate文件包含有关旅游相关基础设施的信息。综上所述:

  • tf文件告诉需要创建什么
  • tfstate文件告诉创建了什么

因此,当您再次部署时,Terraform知道做了什么,以及需要更新的部分(如果有的话(。

当您在本地运行terraform apply时,您还可以获得tfstate文件,在保留该文件之前,您可以安全地更新基础设施。在CD上,您的代理返回到池中,您更改的内容将被初始化,这就是为什么需要外部源来保存此文件。

从我的角度来看,我建议将它保存在与运行环境不同的资源组和存储中。我的意思是,最好把它放在部署代码的资源组之外。

编辑

对不起,我的错。但我认为这是配置后端的一种方式。这也是唯一一个。否则,你可能会做得不对。在构建运行之前,你知道,所以在配置这一步时,Azure DevOps不知道有关你的文件的详细信息,包括你的后端配置。

可能还有另一种解释。强制用户提供后端配置比在文件中检查更容易。此外,您可以在不更改代码的情况下轻松更改它。(我知道可以给它传递一个参数,但在这里你实际上没有选择。(

最新更新