我正在尝试https://app.terraform.io/免费计划
我已经在UI中设置了一些变量。
现在,我想在我的Terraform代码中使用这些变量。
首先我设置为后端
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 2.70"
}
}
backend "remote" {
organization = "mycompany"
workspaces {
name = "DEV"
}
}
}
我也设置了数据源
data "terraform_remote_state" "mycompany" {
backend = "remote"
config = {
organization = "mycompany"
workspaces = {
name = "DEV"
}
}
}
现在我尝试使用这些变量
provider "aws" {
region = var.region
access_key = data.terraform_remote_state.mycomany.aws_access_key
secret_key = data.terraform_remote_state.mycomany.aws_secret_key
}
当我运行Terraform时,我得到...
Error: Unsupported attribute
on main.tf line 3, in provider "aws":
3: access_key = data.terraform_remote_state.mycomany.aws_access_key
This object has no argument, nested block, or exported attribute named
"aws_access_key"
我已经阅读了https://www.terraform.io/docs/cloud/workspaces/variables.html,https://www.hashicorp.com/blog/variable-management-in-terraform-cloud和其他一些文档。
我无法理解这个……(来自https://www.terraform.io/docs/cloud/workspaces/variables.html)
查找变量名 Terraform Cloud无法从工作空间的Terraform代码中自动发现变量名称。您必须通过阅读代码或文档发现必要的变量名,然后手动输入它们。
如果缺少必需的输入变量,则工作空间中的Terraform计划将失败并在日志中打印说明。
所以,我的目标是。
如何同时使用Terraform云中的普通变量和环境变量?
答案 0 :(得分:0)
我不需要数据源。
我需要将变量(无值)注册到例如variables.tf
intput: this,is,a,test
output: {this, is, a, test} --> TRUE output
input: this,is not,a,test
output: {this, is} --> FALSE output --> Desired output: {this, is not, a, test}
现在,您可以照常使用变量了
#############################
# FROM WORKSPACE
#############################
variable "aws_access_key" {}
variable "aws_secret_key" {}
要在工作空间之间切换(以重用我们的代码),我们可以使用前缀而不是名称来更改远程配置。然后,terraform CLI要求我们提供工作空间,或者您可以在terraform工作空间中选择
provider "aws" {
region = var.region
access_key = var.aws_access_key
secret_key = var.aws_secret_key
}
在这种情况下,我的工作区是mycompany-DEV和mycompany-PRO