如何通过 terraform 获取现有 ec2 实例的实例 id / arn?

2024-03-14

我正在使用 Terraform 进行一些基础设施部署:

data "aws_instance" "ec2_my_admin_instance" {
  filter {
    name = "tag:TfServerType"
    values = ["myAdmin"]
  }
}


output "theId" {
  value = "${data.aws_instance.ec2_my_admin_instance.instance_id}"
}
output "type" {
  value = "${data.aws_instance.ec2_my_admin_instance.instance_type}"
}
output "placement_group" {
  value = "${data.aws_instance.ec2_my_admin_instance.placement_group}"
}
output "availability_zone" {
  value = "${data.aws_instance.ec2_my_admin_instance.availability_zone}"
}
output "arn" {
  value = "${data.aws_instance.ec2_my_admin_instance.arn}"
}

但是,最重要的值(id、arn)未显示:

Outputs:

availability_zone = ap-southeast-2b
type = m4.large

我错过了什么吗?


@jdurkin 回答了这个问题,但没有告诉你如何得到它,这就是你所要求的。

terraform 文档并不总是更新所有属性(我称它们为available output variables)。对于您的情况,您无法从在线文档中找到要使用的正确属性。猜测可能是 jdurkin 的答案,但并不总是正确的。

因此,您需要自己找出并找到合适的。

(您可以将地区更改为您喜欢的地区)

provider "aws" {
  region = "ap-southeast-2"
}

data "aws_instance" "ec2_my_admin_instance" {
  filter {
    name = "tag:TfServerType"
    values = ["myAdmin"]
  }
}

terraform apply改变 (它是数据源,不会创建任何资源,所以你可以安全运行)

terraform init
terraform plan
terraform apply

成功运行上述命令后,您应该得到一个本地文件terraform.tfstate

对文件进行 Cat 扫描,部分内容为attributes,你应该得到所有属性具有属性名称和值,id在属性列表中,但没有属性arn您现在可以确认这一点。您应该有信心选择正确的一个并输入输出代码。

"modules": [
        {
            "path": [
                "root"
            ],
            "outputs": {},
            "resources": {
                "data.aws_instance.ec2_my_admin_instance": {
                    "type": "aws_instance",
                    "depends_on": [],
                    "primary": {
                        "id": "i-xxxx",
                        "attributes": {
                            "ami": "ami-xxxx",
                            ....
                            "id": "i-xxxx",
                            "instance_state": "running",
                            ....
                        },
                        "meta": {},
                        "tainted": false
                    },
                    "deposed": [],
                    "provider": ""
                }
            },
            "depends_on": []
        }
    ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 terraform 获取现有 ec2 实例的实例 id / arn? 的相关文章

随机推荐