【问题标题】:Devops terraform: backend configuration in .tf file versus in devops' terraform CD configDevops terraform:.tf 文件中的后端配置与 devops 的 terraform CD 配置中的后端配置
【发布时间】:2020-04-23 17:50:16
【问题描述】:

使用微软的“terraform”任务作为CD任务,需要设置存储账户、容器、blob等的所有后端状态数据。为什么会这样,当我们把所有东西都放在.tf中时? Azure Devops 是否作为标准做法忽略 TF 文件中用户定义的后端配置?

【问题讨论】:

  • 这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗?
  • Leo - 感谢您之前给出的详细回答。我已将其作为已接受的答案进行检查

标签: azure-devops


【解决方案1】:

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

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

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

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    Terraform 在tfstate 文件中保持状态,而不是在 tf.你的代码不是你的状态。你的代码,你的tf 文件有基础设施的定义。它是必须创建的信息。相反,tfstate 文件包含有关旅游部署的基础设施的信息。总结一下:

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

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

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

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

    编辑

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

    还有其他解释。强制用户提供后端配置比在文件中签入更容易。此外,您无需更改代码即可轻松更改它。 (我知道可以将参数传递给它,但在这里你实际上别无选择。)

    【讨论】:

    • 也许我很密集,但这没有帮助,我问为什么我们必须在 Devops 中定义后端细节,在 init 任务下,当我们已经在 terraform .tf 中完全配置了后端时文件?
    猜你喜欢
    • 2021-04-04
    • 2019-08-22
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 2022-10-24
    相关资源
    最近更新 更多