如何根据Terraform AWS中的变量启用/禁用磁盘?
我想创建一个AWS实例,并根据一个变量,创建一个额外的磁盘或不创建。这将允许我保留相同的.tf文件,并在需要磁盘时通过命令行变量指定如何根据Terraform AWS中的变量启用/禁用磁盘?,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我想创建一个AWS实例,并根据一个变量,创建一个额外的磁盘或不创建。这将允许我保留相同的.tf文件,并在需要磁盘时通过命令行变量指定 ... variable "create-extra-disk" { default=false } ... resource "aws_instance" "my_instance" { count = "${var.instance_count}" ami = "${var.image_id}
...
variable "create-extra-disk" {
default=false
}
...
resource "aws_instance" "my_instance" {
count = "${var.instance_count}"
ami = "${var.image_id}"
instance_type = "${var.type}"
key_name = "${aws_key_pair.my-keypair.key_name}"
security_groups = ["${aws_security_group.basic_sg.name}"]
ebs_block_device {
# enable = "${var.create-extra-disk}" # I'd like something like this
device_name = "/dev/sdb"
volume_size = 100
volume_type = "gp2"
delete_on_termination = true
}
...
您需要创建两个资源并使用count和一个变量来包含运行额外磁盘部件的条件,所有这些都将在单个文件中
...
variable "create-extra-disk" {
default=false
}
...
resource "aws_instance" "my_instance" {
count = "${var.instance_count && var.create-extra-disk == true ? 1 : 0}"
ami = "${var.image_id}"
instance_type = "${var.type}"
key_name = "${aws_key_pair.my-keypair.key_name}"
security_groups = ["${aws_security_group.basic_sg.name}"]
}
resource "aws_instance" "my_instance_with_ebs" {
count = "${var.instance_count && var.create-extra-disk == true ? 1 : 0 }"
ami = "${var.image_id}"
instance_type = "${var.type}"
key_name = "${aws_key_pair.my-keypair.key_name}"
security_groups = ["${aws_security_group.basic_sg.name}"]
ebs_block_device {
device_name = "/dev/sdb"
volume_size = 100
volume_type = "gp2"
delete_on_termination = true
}
您可以为ec2、ebs和ebs附件使用单独的资源进行配置, 上述代码似乎是terraform 0.11或更低 变量创建额外磁盘{ 默认值=真 } 资源aws_实例我的_实例{ count=${var.instance\u count} ... } 资源aws\U ebs\U卷附加{ count=${var.create-extra-disk==true?var.instance_count:0} 可用性分区=${var.region} 尺寸=100 类型=gp2 } 资源aws\U卷\U附件ebs\U附件{ count=${var.create-extra-disk==true?var.instance_count:0} 设备名称=/dev/sdb volume\u id=${elementaws\u ebs\u volume.additional.*.id,count.index} instance_id=${elementaws_instance.my_instance.*.id,count.index} }
什么版本的地形?我最后使用了aws\U ebs\U卷。