openstack.cloud.routers_info 模块 – 检索一个或多个 OpenStack 路由器的信息。
注意
此模块是 openstack.cloud 集合(版本 2.3.0)的一部分。
如果您正在使用 ansible
包,您可能已经安装了这个集合。它不包含在 ansible-core
中。要检查是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install openstack.cloud
。您需要进一步的要求才能使用此模块,请参阅要求了解详细信息。
要在 playbook 中使用它,请指定:openstack.cloud.routers_info
。
概要
从 OpenStack 检索一个或多个路由器的信息。
要求
在执行此模块的主机上需要以下要求。
python >= 3.6
openstacksdk >= 1.0.0
参数
参数 |
注释 |
---|---|
套接字层在 API 调用超时之前应等待多长时间。如果省略此项,则不会将任何内容传递到 requests 库。 |
|
包含云身份验证插件策略所需的身份验证信息的字典。对于默认的password插件,这将包含auth_url、username、password、project_name 以及有关域的任何信息(例如,如果云支持它们,则包含user_domain_name或project_domain_name)。对于其他插件,此参数将需要包含该身份验证插件所需的任何参数。如果提供了命名云或存在 OpenStack OS_* 环境变量,则不需要此参数。 |
|
要使用的身份验证插件的名称。如果云使用密码身份验证以外的身份验证方式,则应在此处指示插件的名称,并且应相应地更新auth参数的内容。 |
|
可用作验证 SSL API 请求的一部分的 CA 证书捆绑包的路径。 |
|
用作 SSL 事务一部分的客户端证书的路径。 |
|
用作 SSL 事务一部分的客户端密钥的路径。 |
|
要操作的命名云或云配置。如果 cloud 是一个字符串,它会引用 OpenStack clouds.yaml 文件中定义的命名云配置。为 auth 和 auth_type 提供默认值。如果提供了 auth 或存在 OpenStack OS_* 环境变量,则不需要此参数。如果 cloud 是一个字典,它包含一个完整的云配置,就像在 clouds.yaml 的某个部分一样。 |
|
用于进一步过滤的元数据字典。此字典的元素可能是其他字典。 默认: |
|
按资源的易于理解的描述来筛选列表结果。 |
|
按资源的管理状态(开启 (true) 或关闭 (false))来筛选列表结果。 选项
|
|
按资源的易于理解的名称来筛选列表结果。 |
|
按拥有该资源的项目的 ID 来筛选列表结果。 |
|
按资源的修订号来筛选列表结果。 |
|
用于筛选列表结果的标签列表。将返回与此列表中所有标签匹配的资源。 |
|
要从服务目录中获取的端点 URL 类型。 选项
|
|
路由器的名称或 ID |
|
区域的名称。 |
|
OpenStackSDK 的日志级别 选项
|
|
OpenStackSDK 日志文件的路径。如果为空,则不写入任何日志 |
|
ansible 应等待请求的资源多长时间。 默认: |
|
是否应验证 SSL API 请求。 在 Ansible 2.3 之前,默认为 选项
|
|
ansible 是否应等待直到请求的资源完成。 选项
|
注意
注意
可以使用标准的 OpenStack 环境变量,例如
OS_USERNAME
,而不是提供显式值。身份验证信息由 openstacksdk 驱动,这意味着值可以来自 /etc/ansible/openstack.yaml、/etc/openstack/clouds.yaml 或 ~/.config/openstack/clouds.yaml 中的 yaml 配置文件,然后来自标准环境变量,最后来自 play 中的显式参数。有关更多信息,请访问 https://docs.openstack.org/openstacksdk/
示例
- name: Gather information about routers
openstack.cloud.routers_info:
auth:
auth_url: https://identity.example.com
username: user
password: password
project_name: someproject
register: result
- name: Show openstack routers
debug:
msg: "{{ result.routers }}"
- name: Gather information about a router by name
openstack.cloud.routers_info:
auth:
auth_url: https://identity.example.com
username: user
password: password
project_name: someproject
name: router1
register: result
- name: Show openstack routers
debug:
msg: "{{ result.routers }}"
- name: Gather information about a router with filter
openstack.cloud.routers_info:
auth:
auth_url: https://identity.example.com
username: user
password: password
project_name: someproject
filters:
is_admin_state_up: True
register: result
- name: Show openstack routers
debug:
msg: "{{ result.routers }}"
- name: List all routers
openstack.cloud.routers_info:
cloud: devstack
register: routers
- name: List ports of first router
openstack.cloud.port_info:
cloud: devstack
filters:
device_id: "{{ routers.routers.0.id }}"
register: ports
- name: Show first router's fixed ips
debug:
msg: "{{ ports.ports
|rejectattr('device_owner', 'equalto', 'network:router_gateway')
|sum(attribute='fixed_ips', start=[])
|map(attribute='ip_address')
|sort|list }}"
- name: List ports of all routers
loop: "{{ routers.routers }}"
openstack.cloud.port_info:
cloud: devstack
filters:
device_id: "{{ item['id'] }}"
register: ports
- name: Transform ports for interfaces_info entries
loop: "{{ ports.results|map(attribute='ports')|list }}"
set_fact:
interfaces_info: |-
{% for port in item %}
{% if port.device_owner != "network:router_gateway" %}
{% for fixed_ip in port['fixed_ips'] %}
- port_id: {{ port.id }}
ip_address: {{ fixed_ip.ip_address }}
subnet_id: {{ fixed_ip.subnet_id }}
{% endfor %}
{% endif %}
{% endfor %}
register: interfaces
- name: Combine router and interfaces_info entries
loop: "{{
routers.routers|zip(interfaces.results|map(attribute='ansible_facts'))|list
}}"
set_fact:
# underscore prefix to prevent overwriting facts outside of loop
_router: "{{
item.0|combine({'interfaces_info': item.1.interfaces_info|from_yaml})
}}"
register: routers
- name: Remove set_fact artifacts from routers
set_fact:
routers: "{{ {
'routers': routers.results|map(attribute='ansible_facts._router')|list
} }}"
- debug: var=routers
返回值
通用返回值记录在此处,以下是此模块特有的字段
键 |
描述 |
---|---|
具有有关路由器的所有 openstack 信息 返回: 始终,但可以为空 |
|
可用区提示 返回: 成功 |
|
可用区 返回: 成功 |
|
路由器创建的日期和时间 返回: 成功 |
|
路由器的描述注释 返回: 成功 |
|
路由器的外部网关信息。 返回: 成功 |
|
路由器 flavor 的 ID 返回: 成功 |
|
唯一的 UUID。 返回: 成功 |
|
网络管理状态 返回: 成功 |
|
指示这是一个分布式路由器。 返回: 成功 |
|
指示这是一个高可用路由器。 返回: 成功 |
|
路由器的名称。 返回: 成功 |
|
与此路由器关联的项目 ID。 返回: 成功 |
|
修订号 返回: 成功 |
|
L3 路由器的额外路由配置。 返回: 成功 |
|
路由器状态。 返回: 成功 |
|
标签列表 返回: 成功 |
|
所有者租户 ID 返回: 成功 |
|
路由器上次更新的日期 返回: 成功 |