Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据Terraform AWS中的变量启用/禁用磁盘?_Terraform_Terraform Provider Aws - Fatal编程技术网

如何根据Terraform AWS中的变量启用/禁用磁盘?

如何根据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}

我想创建一个AWS实例,并根据一个变量,创建一个额外的磁盘或不创建。这将允许我保留相同的.tf文件,并在需要磁盘时通过命令行变量指定

...
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卷。