首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >terraform输出多重aws ebs_volumes

terraform输出多重aws ebs_volumes
EN

Stack Overflow用户
提问于 2018-07-24 17:27:24
回答 1查看 1.2K关注 0票数 0
代码语言:javascript
运行
复制
$ terraform --version
Terraform v0.11.7
+ provider.aws v1.28.0

我想知道是否可以从AWS实例输出所有ebs卷。

我有一个main.tf,如下所示:

代码语言:javascript
运行
复制
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验证了所讨论的实例是否有多个卷。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-30 18:30:17

它只打印一个卷,因为您在数据源中只设置了一个卷。如果您检查状态文件,您可能会发现,即使有多个设备连接,它也只列出了一个设备。

您需要为每个卷设置一个数据源。但是,这意味着您已经知道了卷的数量。所以,这可能不是该走的路。

获取附加到任何给定实例的所有卷的列表的一种方法是使用实例资源以及实例id、ami和实例类型。使用terraform导入将实例导入状态。然后使用terraform刷新显示与实例相关的所有卷。

变化

代码语言:javascript
运行
复制
data "aws_instance" "kafka_nodes" {
  filter {
    name = "tag:Name"
    values = ["mykas00*"]
  }
}

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

代码语言:javascript
运行
复制
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}"]
}

如果还想要列出根设备,请添加以下内容

代码语言:javascript
运行
复制
output "root_dev" {
  value = ["${aws_instance.kafka_nodes.root_block_device}"]
}

那就去做

代码语言:javascript
运行
复制
terraform import aws_instance.kafka_nodes [instance_id]    
terraform refresh 

您应该看到连接到实例的所有设备的列表,类似于:

代码语言:javascript
运行
复制
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
    }
]

即使是根设备如果你为它添加了部分的话。

代码语言:javascript
运行
复制
    root_dev = [
        {
            delete_on_termination = 1,
            iops = 100,
            volume_id = vol-0197cdd29d212c642,
            volume_size = 8,
            volume_type = gp2
        }
    ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51504441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档