簡體   English   中英

terraform輸出多個aws ebs_volumes

[英]terraform output multiple aws ebs_volumes

$ terraform --version
Terraform v0.11.7
+ provider.aws v1.28.0

我想找出是否可以從AWS實例輸出所有ebs卷。

我有一個main.tf與以下內容:

data "aws_instance" "kafka_nodes" {
  filter {
    name = "tag:Name"
    values = ["mykas00*"]
  }
}

output "block_devs" {
  value = "${data.aws_instance.kafka_nodes.ebs_block_device}"
}

上面僅顯示一個卷,但是我已經通過AWS CLI驗證了所涉及的實例具有多個卷

它僅打印一個卷,因為您僅在數據源中設置了一個卷。 如果檢查狀態文件,即使連接了多個設備,您也可能會看到它僅列出了1個設備。

您需要為每個卷設置一個數據源。 但是,這意味着您已經知道卷的數量。 因此,這可能不是要走的路。

獲取所有附加到給定實例的所有卷的列表的方法是使用實​​例資源以及實例ID,AMI和實例類型。 使用terraform import將實例導入狀態。 然后使用terraform刷新顯示附加到實例的所有卷。

更改

data "aws_instance" "kafka_nodes" {
  filter {
    name = "tag:Name"
    values = ["mykas00*"]
  }
}

output "block_devs" {
  value = "${data.aws_instance.kafka_nodes.ebs_block_device}"
}

resource "aws_instance" "kafka_nodes" {
  ami = "<INSTANCE_AMI>"
  instance_type = "<INSTANCE_TYPE>"
  tags {
    Name = "mykas00"
  }
}

output "block_devs" {
  value = ["${aws_instance.kafka_nodes.ebs_block_device}"]
}

如果您還希望列出根設備,請添加以下內容

output "root_dev" {
  value = ["${aws_instance.kafka_nodes.root_block_device}"]
}

然后做

terraform import aws_instance.kafka_nodes [instance_id]    
terraform refresh 

您應該看到與實例連接的所有設備的列表,類似於:

block_instance_devs = [
    {
        delete_on_termination = 0,
        device_name = /dev/sdc,
        encrypted = 0,
        iops = 100,
        snapshot_id = ,
        volume_id = vol-0ceea4f464a24d86a,
        volume_size = 8,
        volume_type = gp2
    },
    {
        delete_on_termination = 0,
        device_name = /dev/sdb,
        encrypted = 0,
        iops = 100,
        snapshot_id = ,
        volume_id = vol-0c0608cf0126f0b2b,
        volume_size = 8,
        volume_type = gp2
    },
    {
        delete_on_termination = 0,
        device_name = /dev/sdd,
        encrypted = 0,
        iops = 100,
        snapshot_id = ,
        volume_id = vol-0fe3c4c67bedf0e9e,
        volume_size = 8,
        volume_type = gp2
    }
]

甚至根設備(如果您為其添加了部分)。

    root_dev = [
        {
            delete_on_termination = 1,
            iops = 100,
            volume_id = vol-0197cdd29d212c642,
            volume_size = 8,
            volume_type = gp2
        }
    ]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM