如何从命令行设置Terraform Cloud的环境变量

47次阅读
没有评论

问题描述

想要了解如何从命令行设置Terraform Cloud的环境变量。他已经创建了一个项目,并希望能够通过命令行来设置这些环境变量。

解决方案

请注意以下操作可能会因版本差异而有所不同。使用前务必做好备份。

使用Terraform Cloud提供者管理工作区配置

您可以使用Terraform Cloud提供者来管理Terraform Cloud中的工作区配置,就像使用Terraform管理任何其他基础架构对象一样。虽然提供者的名称是tfe,但它既适用于管理Terraform Enterprise,也适用于管理Terraform Cloud。以下是如何使用tfe_variable资源类型管理工作区的Terraform变量和环境变量:

  1. 首先,您需要在您的Terraform配置中定义provider "tfe"块,用于指定Terraform Cloud的主机名。

hcl
provider "tfe" {
hostname = "app.terraform.io" # Terraform Cloud的主机名
}

  1. 然后,您可以使用tfe_variable资源类型来管理Terraform变量和环境变量。例如,您可以创建一个名为test的变量:

“`hcl
variable “environment_variables” {
type = map(string)
}

variable “workspace_id” {
type = string
}

resource “tfe_variable” “test” {
for_each = var.environment_variables
key = each.key
value = each.value
category = “env”
workspace_id = var.workspace_id
}
“`

  1. 为了在命令行中使用这个配置,您可以将变量值编码为一个JSON文件(例如azure.tfvars.json),然后通过terraform apply命令来应用配置:

json
{
"workspace_id": "organization/workspace",
"environment_variables": {
"ARM_CLIENT_ID": "...",
"ARM_CLIENT_SECRET": "...",
"ARM_SUBSCRIPTION_ID": "...",
"ARM_TENANT_ID": "..."
}
}

执行以下命令来应用配置:

sh
terraform apply -var-file=azure.tfvars.json

通过上述步骤,您可以使用Terraform Cloud提供者来管理工作区的变量和环境变量,实现从命令行设置Terraform Cloud环境变量的目标。

在考虑自动化这类操作时,需要考虑这个“早期” Terraform 配置的状态快照将保存在哪里。您可以为此特殊配置创建一个额外的Terraform Cloud工作区,并确保配置不使用远程操作,以便本地运行这个工作区可以安排其他工作区支持远程操作。

请注意,使用Terraform Cloud提供者进行管理时,如果项目已经存在,可能会出现一些困难。与其他Terraform资源不同,如果项目已经存在,它会导致错误。通常情况下,您期望能够覆盖现有变量的最新版本,因为对我来说,变量不像服务器那样。我期望只是更新/覆盖。与Azure DevOps类似的共享密钥或变量库的缺失使得完全利用这一点有点棘手。

正文完