Tan*_*aki 1 infrastructure terraform
我的团队严重依赖Terraform内部的S3远程状态。-backend-config在初始化项目时,我们使用CLI 的功能指定S3配置,因此我们的实际Terraform代码如下所示:
terraform {
backend "s3" {}
}
Run Code Online (Sandbox Code Playgroud)
只要在CLI上使用指定了所有S3属性,上述方法就可以很好地工作-backend-config。
我们想使用类似的策略在我们配置的其他地方引用这些状态。由于后端的参数是动态的,并且是在CLI上指定的,因此我们希望做到这一点。
data "terraform_remote_state" "dns" {
backend = "s3"
config {
key = "configurations/production/dns/terraform.tfstate"
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我们省略了required region和bucketparameter,这当然会导致plan / apply失败(带有not a valid region:)。
有没有一种方法可以用来从CLI指定远程状态引用的区域和存储区,而不是对其进行硬编码?
该backend块之所以非常特殊,是因为它在Terraform的工作流程中得到了如此早期的处理,因此它无法访问正常的Terraform功能(例如变量)。这就是为什么它具有自己的特殊机制来配置它的原因。
该terraform_remote_state数据源,在另一方面,是只是一个普通的数据源等任何正常插补策略可以用它来使用。例如,要通过CLI传递设置,可以使用变量:
variable "dns_state_region" {
}
variable "dns_state_key" {
}
data "terraform_remote_state" "dns" {
backend = "s3"
config {
region = "${var.dns_state_region}"
key = "${var.dns_state_key}"
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以将这些传递给terraform plan命令:
$ terraform plan \
-var="dns_state_region=us-west-1" \
-var="dns_state_key=configurations/production/dns/terraform.tfstate"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |