terraform提供程序版本的输入变量
在CI/CD上下文中,我想使用terraform提供程序版本的输入变量,terraform,Terraform,在CI/CD上下文中,我想使用TF\u VAR\uu在terraform配置之外定义提供者版本 我试图使用输入变量在versions.tf(terraform 0.12)中设置helm provider的版本,但这似乎是不允许的: Error: Invalid provider_requirements syntax on versions.tf line 3, in terraform: 3: helm = "${var.helm_version}"
TF\u VAR\uu
在terraform配置之外定义提供者版本
我试图使用输入变量在versions.tf
(terraform 0.12)中设置helm provider的版本,但这似乎是不允许的:
Error: Invalid provider_requirements syntax
on versions.tf line 3, in terraform:
3: helm = "${var.helm_version}"
provider_requirements entries must be strings or objects.
Error: Variables not allowed
on versions.tf line 3, in terraform:
3: helm = "${var.helm_version}"
Variables may not be used here.
我如何配置它
如果不可能,我如何在配置之外管理terraform provider版本?无法完成。我希望能做到
terraforminit
解析并下载提供程序,此时您将无法访问变量
每个地形块可以包含许多与地形相关的设置
地形的行为。在地形块内,只有常量值
可以使用;参数不能引用命名对象,例如
资源、输入变量等,并且可能不使用任何地形
语言内置函数
正如@thekbb所说,至少在
0.12.20
中,在terraforminit
期间不可能访问版本变量。但是,我在下面介绍了在您的配置之外管理提供程序的变通方法
您可以将alias
与提供程序配置一起使用来实现这一点。假设您想要1.3.0
版本的helm
。您可以使用下面的别名静态地定义它,而不是将其作为var传递
provider "helm" {
alias = "helm-stable"
version = "1.3.0" (the version you pass via TF_VAR_helm_version)
kubernetes {
host = "https://104.196.242.174"
username = "ClusterMaster"
password = "MindTheGap"
client_certificate = file("~/.kube/client-cert.pem")
client_key = file("~/.kube/client-key.pem")
cluster_ca_certificate = file("~/.kube/cluster-ca-cert.pem")
}
}
然后,在资源
或数据
提供程序中,您可以指向特定的提供程序,如下所示:
data "some_ds" "example" {
name = "dummy"
provider = helm.helm-stable
}
有关更多详细信息,请参阅以下链接: