我有这个main.tf文件:
resource "google_compute_instance" "prod" {
count = var.is_test == false ? 1 : 0 #condition : if the is_test = false , create 1 instance of vm
name = "vm-prod"
machine_type = "e2-medium"
zone = "us-central1-c"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
access_config {
}
}
}
resource "google_compute_instance" "dev" {
count = var.is_test == true ? 3 : 0 #condition : if the is_test = true, create 3 instance of vm
name = "vm-dev"
machine_type = "e2-small"
zone = "us-central1-b"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
access_config {
}
}
}和variables.tf文件:
variable "is_test" {
type = bool
description = "env"
default = true
}我使用is_test变量来选择环境,以私有虚拟机
现在,我想从main.tf中删除输入参数的值,并在terraform.tfvars中使用它们。
我怎么能做到这一点?如何根据条件动态地设置输入参数的值?
我的意思是:如果env是dev,vm的大小很小,区域在us-central1 1-b.
如果env为prod,则vm的大小为medium,...谢谢
发布于 2021-08-09 14:44:36
我会这样做,这样你就不必重复代码和tfvars文件:
resource "google_compute_instance" "instance" {
name = var.is_test == false ? "vm-prod" : "vm-dev"
machine_type = var.is_test == false ? "e2-medium" : "e2-small"
zone = var.is_test == false ? "us-central1-c" : "us-central1-b"
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
access_config {
}
}
}发布于 2021-08-09 14:28:27
main.tf
resource "google_compute_instance" "my_instance" {
count = var.instances
name = var.name
machine_type = var.machine_type
zone = var.zone
boot_disk {
initialize_params {
image = "debian-cloud/debian-9"
}
}
network_interface {
network = "default"
access_config {
}
}
}dev.tfvars
instances = 1
name = "vm-dev"
machine_type="e2-small"
zone="us-central1-b"prod.tfvars
instances = 3
name = "vm-prod"
machine_type="e2-medium"
zone="us-central1-c"运行命令
terraform apply -var-file="dev.tfvars"
terraform apply -var-file="prod.tfvars"https://stackoverflow.com/questions/68713267
复制相似问题