Wil*_*lly 1 gitlab-ci terraform hcl terraform-provider-ibm
我知道 CI/CD 变量可以在 HCL 中使用,因为在环境中使用 TF_VAR_ 前缀声明它们将使我能够将它们作为输入变量查找,然后在我所在的 .tf 文件中使用它们。需要他们。
\n我做了:
\nTF_VAR_ibm_api_key,然后屏蔽它。main.tfmain.tfvariables.tf,结果相同这是我的main.tf文件:
variable ibm_api_key {\n}\n\nterraform {\n required_version = ">= 0.13"\nrequired_providers {\n ibm = {\n source = "IBM-Cloud/ibm"\n }\n }\n}\n\nprovider "ibm" {\n ibmcloud_api_key = var.ibm_api_key\n}\nRun Code Online (Sandbox Code Playgroud)\n预期行为:变量从 CI/CD 传递并添加到 HCL 代码中。
\n当前行为:在 \xc2\xb4plan\xc2\xb4 期间,作业失败并出现错误代码 1
\n$ terraform plan\nvar.ibm_api_key\n Enter a value: \xe2\x95\xb7\n\xe2\x94\x82 Error: No value for required variable\n\xe2\x94\x82 \n\xe2\x94\x82 on main.tf line 1:\n\xe2\x94\x82 1: variable ibm_api_key {\n\xe2\x94\x82 \n\xe2\x94\x82 The root module input variable "ibm_api_key" is not set, and has no default\n\xe2\x94\x82 value. Use a -var or -var-file command line argument to provide a value for\n\xe2\x94\x82 this variable.\n\xe2\x95\xb5\nRun Code Online (Sandbox Code Playgroud)\n尽管从逻辑上讲这似乎不是问题,但我尝试将变量调用格式化为字符串插值,例如:
\n供应商 "ibm" {\nibmcloud_api_key = "${var.ibm_api_key}"\n}\n自然无济于事。
\n尽管从逻辑上讲这似乎不是问题,但我尝试为变量定义类型:
\n变量 ibm_api_key {\ntype = string\n}\n自然无济于事。
\n为了检查变量是否从 CI/CD 设置传递到 gitlab 运行程序的环境,我添加了一个既未受保护也未屏蔽的变量,并插入了双重检查的分配字符串:
\n这不会导致错误,但也不会被打印。输出中仅出现“echo”命令。
\n$ echo ${output_check}\n$ echo ${TF_VAR_ibm_api_key}\nCleaning up project directory and file based variables 00:01\nJob succeeded\nRun Code Online (Sandbox Code Playgroud)\n
提供者通常在其架构和/或关联的身份验证绑定中配置固有环境变量。根据提供商身份验证文档,这种情况没有什么不同。您可以使用 GitlabCI 项目环境变量设置中的 IBM API 密钥对提供程序进行身份验证:
IAAS_CLASSIC_API_KEY="iaas_classic_api_key"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3190 次 |
| 最近记录: |