Terraform 如何实施";粘的;地形中的变量?
我想要一个具有以下属性的Terraform变量:Terraform 如何实施";粘的;地形中的变量?,terraform,amazon-ecs,Terraform,Amazon Ecs,我想要一个具有以下属性的Terraform变量: 如果从未设置过,请使用默认值 如果未提供值,请使用上一次运行的值 如果提供了值,请使用该值并记住它 这个用例是针对AWS ECS标签的,我希望能够通过更改标签来部署新版本,这将导致Terraform创建新的任务定义并修改服务定义。但是,如果我运行“terraform apply”,而不传递新值,我不希望发生任何事情,即terraform会记住上一次运行的值 欢迎您的建议 本文档没有说明如何维护您需要的状态,但它确实提供了有关变量的有用信息-
- 如果从未设置过,请使用默认值
- 如果未提供值,请使用上一次运行的值
- 如果提供了值,请使用该值并记住它
欢迎您的建议 本文档没有说明如何维护您需要的状态,但它确实提供了有关变量的有用信息- 你也可以-
variable "template" {
type = "string"
default = "01000000-0000-4000-8000-000030080200"
}
or
variable "environment-type" {
type = "map"
default = {
dev = "DEVELOPMENT"
preprod = "PRE-PRODUCTION"
prod = "PRODUCTION"
}
}
我试图做一些类似的事情,偶然发现了这篇文章。最后我想出了一个解决方案,所以我想我应该和其他看到这篇文章的人分享
variable "maintenance" {
description = "Set to active, disabled or previous (Default)"
type = string
default = "previous"
}
# This is used so we can lookup the previous value of the maintenance setting in the state file
data "terraform_remote_state" "bc" {
backend = "gcs"
config = {
bucket = "terraform-bucket"
prefix = "terraform/state"
}
workspace = terraform.workspace
# Set a default value in case of an empty state file
defaults = {
maintenance = "disabled"
}
}
locals {
maintenance_status = var.maintenance == "previous" ? data.terraform_remote_state.bc.outputs.maintenance : var.maintenance
}
# Used to expose the current value to subsequent tf runs
output "maintenance" {
value = example_resource.maintenance.status
}
然后可以使用命令行更改设置,但如果未指定,则将使用以前的值
terraformapply-var=“maintenance=active”
这并不是terraform真正的工作原理。您正在声明希望资源的外观。更改声明后,资源也会随之更改。不做任何更改,资源保持不变,无论应用配置多少次。