Terraform local-exec 如何在 Concourse 上工作?

How Terraform local-exec works on Concourse?

我使用 'null_resource' 并将 aws cli 传递给 'local-exec' 以更新 stepfunction:

resource "null_resource" "enable_step_function_xray" {
  triggers = {
    state_machine_arn = xxxxxxx
  }

  provisioner "local-exec" {
    command     = "aws stepfunctions update-state-machine --state-machine-arn ${self.triggers.state_machine_arn}  --tracing-configuration enabled=true"
  }
}

这在我通过本地 Terraform 测试时工作正常,我的问题是如果我在 Concourse 上应用 Terraform 是否会工作?

我的假设是,在您的本地计算机上,您已经设置了所需的凭据。因此,如果您只是在 Concourse CI 上尝试,它将因身份验证错误而失败。

要在 Concourse 中设置 -

  1. AWS 控制台 - 创建一个仅具有编程访问权限和相关权限的新 IAM 用户 cicd。出于测试目的,您可以使用 AdministratorAcess 策略,但请确保稍后将其设为 least-privileged
  2. AWS 控制台 - 为 cicd 用户创建 AWS 安全凭证(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)(将它们保存在安全的地方)
  3. 大厅 CI - 创建 secrets AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
  4. 大厅 CI - 添加 ((AWS_ACCESS_KEY_ID))((AWS_SECRET_ACCESS_KEY)) environment variables to your Concourse CI task

我敢肯定有很多关于这个主题的教程,但上述步骤可能会出现在大多数这些教程中。 Concourse CI 现在应该能够在您的 AWS 账户上应用更改。

这完全取决于您是否将 Concourse 作业配置为使用安装了 aws cli 工具的容器映像。如果安装了 AWS CLI 工具并且在路径中,那么 local-exec 应该会成功。如果没有,那么显然会失败。