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

注意

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

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

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

要在 playbook 中使用它,请指定: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 角色的 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 代替。

名称前缀

字符串

在 community.general 0.2.0 中添加

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

配置文件

字符串

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

共享凭证文件

字符串

这是共享凭证文件的路径。它也可以从 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 通常可用于指定阿里云区域(如果需要),但这也可以在足迹配置文件中配置。

示例

# 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"]

实例

复杂

ECS 实例列表

返回:始终

可用区

字符串

实例所在的可用区。

返回:始终

示例:"cn-beijing-a"

块设备映射

复杂

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

返回:始终

附加时间

字符串

附件启动的时间戳。

返回:始终

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

终止时删除

布尔值

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

返回:始终

示例:true

设备名称

字符串

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

返回:始终

示例:"/dev/xvda"

状态

字符串

附件状态。

返回:始终

示例:"in_use"

卷ID

字符串

云盘的 ID。

返回:始终

示例:"d-2zei53pjsi117y6gf9t6"

CPU

整数

实例的 CPU 核心数。

返回:始终

示例:4

创建时间

字符串

创建实例的时间。

返回:始终

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

描述

字符串

实例描述。

返回:始终

示例:"my ansible instance"

EIP

复杂

与实例关联的 EIP 的属性。

返回:始终

分配ID

字符串

EIP 的 ID。

返回:始终

示例:"eip-12345"

互联网计费类型

字符串

EIP 的互联网计费类型。

返回:始终

示例:"paybybandwidth"

IP地址

字符串

EIP 地址。

返回:始终

示例:"42.10.2.2"

过期时间

字符串

实例将过期的日期时间。

返回:始终

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

GPU

复杂

实例 GPU 的属性。

返回:始终

数量

整数

GPU 的数量。

返回:始终

示例:0

规格

字符串

GPU 的规格。

返回:始终

示例:""

主机名

字符串

实例的主机名。

返回:始终

示例:"iZ2zewaoZ"

ID

字符串

instance_id 的别名。

返回:始终

示例:"i-abc12345"

镜像ID

字符串

用于启动实例的镜像的 ID。

返回:始终

示例:"m-0011223344"

内部IP地址

字符串

经典实例的内部 IPv4 地址。

返回:始终

示例:"10.0.0.2"

实例计费类型

字符串

实例计费类型。

返回:始终

示例:"PostPaid"

实例ID

字符串

ECS 实例资源 ID。

返回:始终

示例:"i-abc12345"

实例名称

字符串

实例的名称。

返回:始终

示例:"my-ecs"

实例类型

字符串

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

返回:始终

示例:"ecs.sn1ne.xlarge"

实例类型族

字符串

实例所属的实例类型族。

返回:始终

示例:"ecs.sn1ne"

互联网计费类型

字符串

网络带宽的计费方式。

返回:始终

示例:"PayByBandwidth"

互联网最大入带宽

整数

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

返回:始终

示例:200

互联网最大出带宽

整数

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

返回:始终

示例:20

IO优化

布尔值

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

返回:始终

示例:false

内存

整数

实例的内存大小。

返回:始终

示例:8192

网络接口

复杂

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

返回:始终

MAC地址

字符串

MAC 地址。

返回:始终

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

网络接口ID

字符串

网络接口的 ID。

返回:始终

示例:"eni-01234567"

主要IP地址

字符串

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

返回:始终

示例:"10.0.0.1"

操作系统名称

字符串

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

返回:始终

示例:"CentOS"

操作系统类型

字符串

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

返回:始终

示例:"linux"

私有IP地址

字符串

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

返回:始终

示例:"10.0.0.1"

public_ip_address

字符串

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

返回:始终

示例: "43.0.0.1"

resource_group_id

字符串

实例所属资源组的ID。

返回:始终

示例: "my-ecs-group"

security_groups

列表 / 元素=字典

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

返回:始终

group_id

字符串

安全组的ID。

返回:始终

示例: "sg-0123456"

group_name

字符串

安全组的名称。

返回:始终

示例: "my-security-group"

状态

字符串

实例的当前状态。

返回:始终

示例: "running"

tags

字典

分配给实例的任何标签。

返回:始终

vpc_id

字符串

实例所在的VPC的ID。

返回:始终

示例: "vpc-0011223344"

vswitch_id

字符串

实例运行所在的vswitch的ID。

返回:始终

示例: "vsw-dew00abcdef"

作者

  • 何贵民 (@xiaozhu36)