amazon.aws.ec2_metadata_facts 模块 – 收集 EC2 中远程主机的 facts(实例元数据)

注意

此模块是 amazon.aws 集合(版本 9.0.0)的一部分。

如果您正在使用 ansible 包,您可能已经安装了这个集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install amazon.aws

要在 playbook 中使用它,请指定:amazon.aws.ec2_metadata_facts

amazon.aws 1.0.0 中的新功能

概要

参数

参数

注释

metadata_token_ttl_seconds

整数

在 amazon.aws 8.2.0 中添加

X-aws-ec2-metadata-token-ttl-seconds 标头指定一个值。

值必须介于 121600 之间。

默认值: 60

注释

注意

  • 稍后可能会添加用于筛选 ec2_metadata_facts 的参数。

示例

# Gather EC2 metadata facts
- amazon.aws.ec2_metadata_facts:

# Set a bigger value for X-aws-ec2-metadata-token-ttl-seconds header
- amazon.aws.ec2_metadata_facts:
    metadata_token_ttl_seconds: 240

- debug:
    msg: "This instance is a t1.micro"
  when: ansible_ec2_instance_type == "t1.micro"

返回的 Facts

此模块返回的 Facts 会在 hostvars 主机 facts 中添加/更新,并且可以像任何其他主机 fact 一样按名称引用。它们不需要注册即可使用它们。

描述

ansible_ec2_ami_id

字符串

用于启动实例的 AMI ID。

返回: 成功

示例: "ami-XXXXXXXX"

ansible_ec2_ami_launch_index

字符串

如果您同时启动了多个实例,则此值表示实例启动的顺序。

启动的第一个实例的值为 0。

返回: 成功

示例: "0"

ansible_ec2_ami_manifest_path

字符串

Amazon S3 中 AMI 清单文件的路径。

如果您使用 Amazon EBS 支持的 AMI 启动实例,则返回的结果未知。

返回: 成功

示例: "(unknown)"

ansible_ec2_ancestor_ami_ids

字符串

重新捆绑以创建此 AMI 的任何实例的 AMI ID。

仅当 AMI 清单文件包含 ancestor-amis 键时,此值才会存在。

返回: 成功

示例: "(unknown)"

ansible_ec2_block_device_mapping_ami

字符串

包含根/启动文件系统的虚拟设备。

返回: 成功

示例: "/dev/sda1"

ansible_ec2_block_device_mapping_ebsN

字符串

与 Amazon EBS 卷关联的虚拟设备(如果存在)。

仅当在启动时或上次启动实例时存在 Amazon EBS 卷,它们才会出现在元数据中。

N 表示 Amazon EBS 卷的索引(例如 ebs1 或 ebs2)。

返回: 成功

示例: "/dev/xvdb"

ansible_ec2_block_device_mapping_ephemeralN

字符串

与临时设备关联的虚拟设备(如果存在)。N 表示临时卷的索引。

返回: 成功

示例: "/dev/xvdc"

ansible_ec2_block_device_mapping_root

字符串

与根设备关联的虚拟设备或分区,或虚拟设备上的分区,其中根(/ 或 C)文件系统与给定的实例关联。

返回: 成功

示例: "/dev/sda1"

ansible_ec2_block_device_mapping_swap

字符串

与交换空间关联的虚拟设备。并非总是存在。

返回: 成功

示例: "/dev/sda2"

ansible_ec2_fws_instance_monitoring

字符串

值显示客户是否在 CloudWatch 中启用了详细的 1 分钟监控。

返回: 成功

示例: "enabled"

ansible_ec2_hostname

字符串

实例的私有 IPv4 DNS 主机名。

如果存在多个网络接口,则这是指 eth0 设备(设备号为 0 的设备)。

返回: 成功

示例: "ip-10-0-0-1.ec2.internal"

ansible_ec2_iam_info

复杂

如果实例有关联的 IAM 角色,则包含有关上次更新实例配置文件的信息,包括实例的 LastUpdated 日期、InstanceProfileArn 和 InstanceProfileId。否则,不存在。

返回: 成功

示例: ""

InstanceProfileArn

字符串

与实例关联的 InstanceProfile 的 ARN。

返回: 成功

InstanceProfileId

字符串

与实例关联的 InstanceProfile 的 ID。

返回: 成功

LastUpdated

字符串

上次与实例关联的 InstanceProfile 更改的时间。

返回: 成功

ansible_ec2_iam_info_instanceprofilearn

字符串

IAM 实例配置文件 ARN。

返回: 成功

示例: "arn:aws:iam::123456789012:instance-profile/role_name"

ansible_ec2_iam_info_instanceprofileid

字符串

IAM 实例配置文件 ID。

返回: 成功

示例: ""

ansible_ec2_iam_info_lastupdated

字符串

IAM 信息上次更新时间。

返回: 成功

示例: "2017-05-12T02:42:27Z"

ansible_ec2_iam_instance_profile_role

字符串

IAM 实例角色。

返回: 成功

示例: "role_name"

ansible_ec2_iam_security_credentials_role_name

字符串

如果实例有关联的 IAM 角色,则 role-name 是该角色的名称,并且 role-name 包含与该角色关联的临时安全凭证。否则,不存在。

返回: 成功

示例: ""

ansible_ec2_iam_security_credentials_role_name_accesskeyid

字符串

IAM 角色访问密钥 ID。

返回: 成功

示例: ""

ansible_ec2_iam_security_credentials_role_name_code

字符串

IAM 代码。

返回: 成功

示例: "Success"

ansible_ec2_iam_security_credentials_role_name_expiration

字符串

IAM 角色凭证过期时间。

返回: 成功

示例: "2017-05-12T09:11:41Z"

ansible_ec2_iam_security_credentials_role_name_lastupdated

字符串

IAM 角色上次更新时间。

返回: 成功

示例: "2017-05-12T02:40:44Z"

ansible_ec2_iam_security_credentials_role_name_secretaccesskey

字符串

IAM 角色私有访问密钥。

返回: 成功

示例: ""

ansible_ec2_iam_security_credentials_role_name_token

字符串

IAM 角色令牌。

返回: 成功

示例: ""

ansible_ec2_iam_security_credentials_role_name_type

字符串

IAM 角色类型。

返回: 成功

示例: "AWS-HMAC"

ansible_ec2_instance_action

字符串

通知实例应该重新启动以准备捆绑。

返回: 成功

示例: "none"

ansible_ec2_instance_id

字符串

此实例的 ID。

返回: 成功

示例: "i-XXXXXXXXXXXXXXXXX"

ansible_ec2_instance_identity_document

字符串

包含实例属性的 JSON,例如 instance-id、私有 IP 地址等。

返回: 成功

示例: ""

ansible_ec2_instance_identity_document_accountid

字符串

返回: 成功

示例: "123456789012"

ansible_ec2_instance_identity_document_architecture

字符串

实例系统架构。

返回: 成功

示例: "x86_64"

ansible_ec2_instance_identity_document_availabilityzone

字符串

实例启动的可用区。

返回: 成功

示例: "us-east-1a"

ansible_ec2_instance_identity_document_billingproducts

字符串

此实例的账单产品。

返回: 成功

示例: ""

ansible_ec2_instance_identity_document_devpayproductcodes

字符串

启动的 AMI 的产品代码。

返回: 成功

示例: ""

ansible_ec2_instance_identity_document_imageid

字符串

用于启动实例的 AMI ID。

返回: 成功

示例: "ami-01234567"

ansible_ec2_instance_identity_document_instanceid

字符串

此实例的 ID。

返回: 成功

示例: "i-0123456789abcdef0"

ansible_ec2_instance_identity_document_instancetype

字符串

实例的类型。

返回: 成功

示例: "m4.large"

ansible_ec2_instance_identity_document_kernelid

字符串

如果适用,则为此实例启动的内核的 ID。

返回: 成功

示例: ""

ansible_ec2_instance_identity_document_pendingtime

字符串

实例挂起时间。

返回: 成功

示例: "2017-05-11T20:51:20Z"

ansible_ec2_instance_identity_document_privateip

字符串

实例的私有 IPv4 地址。

如果存在多个网络接口,则这是指 eth0 设备(设备号为 0 的设备)。

返回: 成功

示例: "10.0.0.1"

ansible_ec2_instance_identity_document_ramdiskid

字符串

如果适用,则在启动时指定的 RAM 磁盘的 ID。

返回: 成功

示例: ""

ansible_ec2_instance_identity_document_region

字符串

实例启动的区域。

返回: 成功

示例: "us-east-1"

ansible_ec2_instance_identity_document_version

字符串

身份文档版本。

返回: 成功

示例: "2010-08-31"

ansible_ec2_instance_identity_pkcs7

字符串

用于根据签名验证文档的真实性和内容。

返回: 成功

示例: ""

ansible_ec2_instance_identity_rsa2048

字符串

用于根据签名验证文档的真实性和内容。

返回: 成功

示例: ""

ansible_ec2_instance_identity_signature

字符串

可供其他方用于验证其来源和真实性的数据。

返回: 成功

示例: ""

ansible_ec2_instance_life_cycle

字符串

实例的购买选项。

返回: 成功

示例: "on-demand"

ansible_ec2_instance_tags_keys

列表 / 元素=字符串

在 amazon.aws 5.5.0 中添加

实例的标签键列表。

如果未启用实例元数据中对标签(InstanceMetadataTags)的访问,则返回空列表。

返回: 成功

示例: ["tagKey1", "tag_key2"]

ansible_ec2_instance_type

字符串

实例的类型。

返回: 成功

示例: "m4.large"

ansible_ec2_local_hostname

字符串

实例的私有 IPv4 DNS 主机名。

如果存在多个网络接口,则这是指 eth0 设备(设备号为 0 的设备)。

返回: 成功

示例: "ip-10-0-0-1.ec2.internal"

ansible_ec2_local_ipv4

字符串

实例的私有 IPv4 地址。

如果存在多个网络接口,则这是指 eth0 设备(设备号为 0 的设备)。

返回: 成功

示例: "10.0.0.1"

ansible_ec2_mac

字符串

实例的媒体访问控制 (MAC) 地址。

如果存在多个网络接口,则这是指 eth0 设备(设备号为 0 的设备)。

返回: 成功

示例: "00:11:22:33:44:55"

ansible_ec2_metrics_vhostmd

字符串

指标;不再可用。

返回: 成功

示例: ""

ansible_ec2_network_interfaces_macs_mac_address_device_number

字符串

与该接口关联的唯一设备编号。设备编号与设备名称相对应;例如,设备编号 2 表示 eth2 设备。

此类别对应于 Amazon EC2 API 和 AWS CLI 的 EC2 命令使用的 DeviceIndex 和 device-index 字段。

返回: 成功

示例: "0"

ansible_ec2_network_interfaces_macs_mac_address_interface_id

字符串

弹性网络接口 ID。

返回: 成功

示例: "eni-12345678"

ansible_ec2_network_interfaces_macs_mac_address_ipv4_associations_ip_address

字符串

与每个公共 IP 地址关联并分配给该接口的私有 IPv4 地址。

返回: 成功

示例: ""

ansible_ec2_network_interfaces_macs_mac_address_ipv6s

字符串

与接口关联的 IPv6 地址。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: ""

ansible_ec2_network_interfaces_macs_mac_address_local_hostname

字符串

接口的本地主机名。

返回: 成功

示例: ""

ansible_ec2_network_interfaces_macs_mac_address_local_ipv4s

字符串

与接口关联的私有 IPv4 地址。

返回: 成功

示例: ""

ansible_ec2_network_interfaces_macs_mac_address_mac

字符串

实例的 MAC 地址。

返回: 成功

示例: "00:11:22:33:44:55"

ansible_ec2_network_interfaces_macs_mac_address_owner_id

字符串

网络接口的所有者的 ID。

在多接口环境中,接口可以由第三方(例如,弹性负载均衡)附加。

接口上的流量始终向接口所有者收费。

返回: 成功

示例: "123456789012"

ansible_ec2_network_interfaces_macs_mac_address_public_hostname

字符串

接口的公共 DNS (IPv4)。如果实例在 VPC 中,则仅当 enableDnsHostnames 属性设置为 true 时才返回此类别。

返回: 成功

示例: "ec2-1-2-3-4.compute-1.amazonaws.com"

ansible_ec2_network_interfaces_macs_mac_address_public_ipv4s

字符串

与接口关联的弹性 IP 地址。一个实例上可能有多个 IPv4 地址。

返回: 成功

示例: "1.2.3.4"

ansible_ec2_network_interfaces_macs_mac_address_security_group_ids

字符串

网络接口所属的安全组的 ID。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "sg-01234567,sg-01234568"

ansible_ec2_network_interfaces_macs_mac_address_security_groups

字符串

网络接口所属的安全组。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "secgroup1,secgroup2"

ansible_ec2_network_interfaces_macs_mac_address_subnet_id

字符串

接口所在的子网的 ID。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "subnet-01234567"

ansible_ec2_network_interfaces_macs_mac_address_subnet_ipv4_cidr_block

字符串

接口所在的子网的 IPv4 CIDR 块。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "10.0.1.0/24"

ansible_ec2_network_interfaces_macs_mac_address_subnet_ipv6_cidr_blocks

字符串

接口所在的子网的 IPv6 CIDR 块。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: ""

ansible_ec2_network_interfaces_macs_mac_address_vpc_id

字符串

接口所在的 VPC 的 ID。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "vpc-0123456"

ansible_ec2_network_interfaces_macs_mac_address_vpc_ipv4_cidr_block

字符串

接口所在的 VPC 的 IPv4 CIDR 块。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "10.0.0.0/16"

ansible_ec2_network_interfaces_macs_mac_address_vpc_ipv4_cidr_blocks

字符串

接口所在的 VPC 的 IPv4 CIDR 块。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: "10.0.0.0/16"

ansible_ec2_network_interfaces_macs_mac_address_vpc_ipv6_cidr_blocks

字符串

接口所在的 VPC 的 IPv6 CIDR 块。仅为在 VPC 中启动的实例返回。

返回: 成功

示例: ""

ansible_ec2_placement_availability_zone

字符串

实例启动的可用区。

返回: 成功

示例: "us-east-1a"

ansible_ec2_placement_region

字符串

实例启动的区域。

返回: 成功

示例: "us-east-1"

ansible_ec2_product_codes

字符串

与实例关联的产品代码(如果有)。

返回: 成功

示例: "aw0evgkw8e5c1q413zgy5pjce"

ansible_ec2_profile

字符串

EC2 实例硬件配置文件。

返回: 成功

示例: "default-hvm"

ansible_ec2_public_hostname

字符串

实例的公共 DNS。如果实例在 VPC 中,则仅当 enableDnsHostnames 属性设置为 true 时才返回此类别。

返回: 成功

示例: "ec2-1-2-3-4.compute-1.amazonaws.com"

ansible_ec2_public_ipv4

字符串

公共 IPv4 地址。如果弹性 IP 地址与该实例关联,则返回的值是弹性 IP 地址。

返回: 成功

示例: "1.2.3.4"

ansible_ec2_public_key

字符串

公钥。仅当在实例启动时提供时才可用。

返回: 成功

示例: ""

ansible_ec2_ramdisk_id

字符串

如果适用,则在启动时指定的 RAM 磁盘的 ID。

返回: 成功

示例: ""

ansible_ec2_reservation_id

字符串

预留 ID。

返回: 成功

示例: "r-0123456789abcdef0"

ansible_ec2_security_groups

字符串

应用于实例的安全组的名称。启动后,您只能更改在 VPC 中运行的实例的安全组。

此类更改会反映在此处以及 network/interfaces/macs/mac/security-groups 中。

返回: 成功

示例: "securitygroup1,securitygroup2"

ansible_ec2_services_domain

字符串

该区域的 AWS 资源的域;例如,us-east-1 的 amazonaws.com。

返回: 成功

示例: "amazonaws.com"

ansible_ec2_services_partition

字符串

资源所在的分区。对于标准 AWS 区域,分区为 aws。

如果您的资源位于其他分区中,则分区为 aws-partitionname。

例如,中国(北京)区域中的资源的分区是 aws-cn。

返回: 成功

示例: "aws"

ansible_ec2_spot_termination_time

字符串

Spot 实例的操作系统将接收关闭信号的大致时间(UTC)。

仅当 Spot 实例已被 Amazon EC2 标记为终止时,此项才存在并包含时间值。

如果您自己终止了 Spot 实例,则 termination-time 项不会设置为时间。

返回: 成功

示例: "2015-01-05T18:02:00Z"

ansible_ec2_user_data

字符串

实例用户数据。

返回: 成功

示例: "#!/bin/bash"

作者

  • Silviu Dicu (@silviud)

  • Vinay Dandekar (@roadmapper)