community.general.ali_instance_info 模块 – 收集阿里云 ECS 实例信息

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

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

要安装它,请使用: ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。

要在剧本中使用它,请指定: community.general.ali_instance_info

摘要

  • 此模块从阿里云的开放 API 中获取数据。必须在ECS实例本身内部调用此模块。

要求

执行此模块的主机需要以下要求。

  • Python >= 3.6

  • footmark >= 1.13.0

参数

参数

注释

alicloud_access_key

别名:access_key_id, access_key

字符串

阿里云访问密钥。如果未设置,则将使用环境变量 ALICLOUD_ACCESS_KEYALICLOUD_ACCESS_KEY_ID 的值。

alicloud_assume_role

别名:assume_role

字典

如果提供角色 ARN,Ansible 将尝试使用提供的凭据来承担此角色。

嵌套的 assume_role 块支持 alicloud_assume_role_arnalicloud_assume_role_session_namealicloud_assume_role_session_expirationalicloud_assume_role_policy

alicloud_assume_role_arn

别名:assume_role_arn

字符串

阿里云 role_arn。要承担的角色的 ARN。如果 ARN 设置为空字符串,则不执行角色切换。它支持环境变量 ALICLOUD_ASSUME_ROLE_ARN。ansible 将使用提供的凭据执行。

alicloud_assume_role_session_expiration

别名:assume_role_session_expiration

整数

阿里云 session_expiration。承担角色后建立的会话过期的时间。有效值范围为 900-3600 秒。默认为 3600(在这种情况下,Alicloud 使用自己的默认值)。它支持环境变量 ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION

alicloud_assume_role_session_name

别名:assume_role_session_name

字符串

阿里云 session_name。承担角色时要使用的会话名称。如果省略,则将“ansible”作为会话名称传递给 AssumeRole 调用。它支持环境变量 ALICLOUD_ASSUME_ROLE_SESSION_NAME

alicloud_region

别名:region, region_id

字符串 / 必需

要使用的阿里云区域。如果未指定,则将使用环境变量 ALICLOUD_REGIONALICLOUD_REGION_ID 的值。

alicloud_secret_key

别名:secret_access_key, secret_key

字符串

阿里云密钥。如果未设置,则将使用环境变量 ALICLOUD_SECRET_KEYALICLOUD_SECRET_ACCESS_KEY 的值。

alicloud_security_token

别名:security_token

字符串

阿里云安全令牌。如果未指定,则将使用环境变量 ALICLOUD_SECURITY_TOKEN 的值。

ecs_role_name

别名:role_name

字符串

附加到 ECS 实例上用于 API 操作的 RAM 角色名称。您可以从阿里云控制台的“访问控制”部分中检索此信息。

如果您正在从使用 RAM 角色的 ECS 实例运行 Ansible,Ansible 将只访问元数据 http://100.100.100.200/latest/meta-data/ram/security-credentials/<ecs_role_name> 以获取 STS 凭据。在 ECS 中运行时,这是比任何其他方法都更优选的方法,因为您可以避免硬编码凭据。相反,这些凭据是由 Ansible 即时租用的,这减少了泄漏的可能性。

过滤器

字典

在 community.general 0.2.0 中添加

应用的过滤器字典。每个字典项包含一个过滤器键和一个过滤器值。过滤器键可以是所有请求参数。参数详情请参见https://www.alibabacloud.com/help/doc-detail/25506.htm。过滤器键可以与请求参数名称相同,也可以是小写,并使用下划线("_")或短横线("-")连接一个参数中的不同单词。InstanceIds应为列表。Tag.n.KeyTag.n.Value应为字典,并使用tags替代。

name_prefix

字符串

在 community.general 0.2.0 中添加

使用实例名称前缀过滤ECS实例。

profile

字符串

这是在共享凭证文件中设置的阿里云配置文件名称。它也可以从ALICLOUD_PROFILE环境变量中获取。

shared_credentials_file

字符串

这是共享凭证文件的路径。它也可以从ALICLOUD_SHARED_CREDENTIALS_FILE环境变量中获取。

如果未设置此项且指定了配置文件,则将使用~/.aliyun/config.json

tags

别名:instance_tags

字典

实例标签的哈希/字典。{"key":"value"}

属性

属性

支持

描述

check_mode

支持:完全支持

在 community.general 3.3.0 中添加

此操作不会修改状态。

可以在check_mode下运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:N/A

此操作不会修改状态。

处于差异模式时,将返回有关已更改内容(或在check_mode下可能需要更改的内容)的详细信息。

备注

注意

  • 如果模块中未设置参数,则可以使用以下环境变量,优先级递减:ALICLOUD_ACCESS_KEYALICLOUD_ACCESS_KEY_IDALICLOUD_SECRET_KEYALICLOUD_SECRET_ACCESS_KEYALICLOUD_REGIONALICLOUD_REGION_IDALICLOUD_SECURITY_TOKENALICLOUD_ECS_ROLE_NAMEALICLOUD_SHARED_CREDENTIALS_FILEALICLOUD_PROFILEALICLOUD_ASSUME_ROLE_ARNALICLOUD_ASSUME_ROLE_SESSION_NAMEALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION

  • ALICLOUD_REGIONALICLOUD_REGION_ID通常可用于指定阿里云区域(如果需要),但这也可以在footmark配置文件中配置。

示例

# Fetch instances details according to setting different filters

- name: Find all instances in the specified region
  community.general.ali_instance_info:
  register: all_instances

- name: Find all instances based on the specified ids
  community.general.ali_instance_info:
    instance_ids:
      - "i-35b333d9"
      - "i-ddav43kd"
  register: instances_by_ids

- name: Find all instances based on the specified name_prefix
  community.general.ali_instance_info:
    name_prefix: "ecs_instance_"
  register: instances_by_name_prefix

- name: Find instances based on tags
  community.general.ali_instance_info:
    tags:
      Test: "add"

返回值

常见的返回值已在此处记录,以下是此模块特有的字段。

描述

ids

列表 / 元素=字符串

ECS实例ID列表

返回:始终返回

示例:["i-12345er", "i-3245fs"]

instances

复杂类型

ECS实例列表

返回:始终返回

availability_zone

字符串

实例所在的可用区。

返回:始终返回

示例:"cn-beijing-a"

block_device_mappings

复杂类型

实例的任何块设备映射条目。

返回:始终返回

attach_time

字符串

附件启动的时间戳。

返回:始终返回

示例:"2018-06-25T04:08:26Z"

delete_on_termination

布尔值

指示在实例终止时是否删除卷。

返回:始终返回

示例:true

device_name

字符串

向实例公开的设备名称(例如,/dev/xvda)。

返回:始终返回

示例:"/dev/xvda"

status

字符串

附件状态。

返回:始终返回

示例:"in_use"

volume_id

字符串

云盘的ID。

返回:始终返回

示例:"d-2zei53pjsi117y6gf9t6"

cpu

整数

实例的CPU核心数。

返回:始终返回

示例:4

creation_time

字符串

创建实例的时间。

返回:始终返回

示例:"2018-06-25T04:08Z"

description

字符串

实例描述。

返回:始终返回

示例:"my ansible instance"

eip

复杂类型

与实例关联的EIP的属性。

返回:始终返回

allocation_id

字符串

EIP 的 ID。

返回:始终返回

示例:"eip-12345"

internet_charge_type

字符串

EIP 的网络计费类型。

返回:始终返回

示例:"paybybandwidth"

ip_address

字符串

EIP 地址。

返回:始终返回

示例:"42.10.2.2"

expired_time

字符串

实例过期时间。

返回:始终返回

示例:"2099-12-31T15:59Z"

gpu

复杂类型

实例GPU的属性。

返回:始终返回

amount

整数

GPU 的数量。

返回:始终返回

示例:0

spec

字符串

GPU 的规格。

返回:始终返回

示例:""

host_name

字符串

实例的主机名。

返回:始终返回

示例:"iZ2zewaoZ"

id

字符串

instance_id 的别名。

返回:始终返回

示例:"i-abc12345"

image_id

字符串

用于启动实例的镜像ID。

返回:始终返回

示例:"m-0011223344"

inner_ip_address

字符串

经典实例的内部IPv4地址。

返回:始终返回

示例:"10.0.0.2"

instance_charge_type

字符串

实例计费类型。

返回:始终返回

示例:"PostPaid"

instance_id

字符串

ECS实例资源ID。

返回:始终返回

示例:"i-abc12345"

instance_name

字符串

实例名称。

返回:始终返回

示例:"my-ecs"

instance_type

字符串

正在运行的实例的实例类型。

返回:始终返回

示例:"ecs.sn1ne.xlarge"

instance_type_family

字符串

实例所属的实例类型系列。

返回:始终返回

示例:"ecs.sn1ne"

internet_charge_type

字符串

网络带宽的计费方式。

返回:始终返回

示例:"PayByBandwidth"

internet_max_bandwidth_in

整数

来自互联网网络的最大入站带宽。

返回:始终返回

示例:200

internet_max_bandwidth_out

整数

来自互联网网络的最大入站带宽。

返回:始终返回

示例:20

io_optimized

布尔值

指示实例是否针对EBS I/O进行了优化。

返回:始终返回

示例:false

memory

整数

实例的内存大小。

返回:始终返回

示例:8192

network_interfaces

复杂类型

实例的一个或多个网络接口。

返回:始终返回

mac_address

字符串

MAC地址。

返回:始终返回

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

network_interface_id

字符串

网络接口的ID。

返回:始终返回

示例:"eni-01234567"

primary_ip_address

字符串

网络接口内vswitch中的主要IPv4地址。

返回:始终返回

示例:"10.0.0.1"

osname

字符串

实例拥有的操作系统的名称。

返回:始终返回

示例:"CentOS"

ostype

字符串

实例拥有的操作系统的类型。

返回:始终返回

示例:"linux"

private_ip_address

字符串

子网内网络接口的IPv4地址。

返回:始终返回

示例:"10.0.0.1"

public_ip_address

字符串

分配给实例的公有IPv4地址或eip地址。

返回:始终返回

示例:"43.0.0.1"

resource_group_id

字符串

实例所属资源组的ID。

返回:始终返回

示例:"my-ecs-group"

security_groups

列表 / 元素=字典

实例的一个或多个安全组。

返回:始终返回

group_id

字符串

安全组的ID。

返回:始终返回

示例:"sg-0123456"

group_name

字符串

安全组名称。

返回:始终返回

示例: "my-security-group"

status

字符串

实例的当前状态。

返回:始终返回

示例: "running"

标签

字典

分配给实例的任何标签。

返回:始终返回

vpc_id

字符串

实例所属VPC的ID。

返回:始终返回

示例: "vpc-0011223344"

vswitch_id

字符串

实例运行所在的vswitch的ID。

返回:始终返回

示例: "vsw-dew00abcdef"

作者

  • 何贵敏 (@xiaozhu36)