community.network.nuage_vspk 模块 – 管理 Nuage VSP 环境
注意
此模块是 community.network 集合 (版本 5.1.0) 的一部分。
如果您正在使用 ansible
包,则您可能已经安装了此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.network
。您需要其他要求才能使用此模块,请参阅 要求 以了解详情。
要在 playbook 中使用它,请指定:community.network.nuage_vspk
。
注意
community.network 集合已被弃用,并将从 Ansible 12 中移除。请参阅 讨论主题 以了解更多信息。
已弃用
- 在以下版本中移除:
6.0.0 版本
- 原因:
此集合及其中的所有内容均未维护且已弃用。
- 替代方案:
未知。
概要
管理或查找 Nuage VSP 实体,包括创建、更新、删除、分配、取消分配和查找,以及所有受支持的属性。
别名:network.nuage.nuage_vspk
要求
以下要求在执行此模块的主机上是必需的。
Python 2.7
支持 Nuage VSP 4.0Rx 和 5.x.y。
为您的 Nuage 版本安装了正确的 VSPK-Python。
已通过 NuageX https://nuagex.io 测试
参数
参数 |
注释 |
---|---|
包含连接到 Nuage VSP 环境所需的认证信息的字典。 需要一个 api_username 参数(例如 csproot)。 需要 api_password 参数(例如 csproot)或 api_certificate 和 api_key 参数,它们分别指向基于证书的身份验证的证书和密钥文件。 需要一个 api_enterprise 参数(例如 csp)。 需要一个 api_url 参数(例如 https://10.0.0.10:8443)。 需要一个 api_version 参数(例如 v4_0)。 |
|
可用于指定一组子实体。 每个子实体的必填属性是 type。 每个子实体的可选属性包括 id、properties 和 match_filter。 这些属性的功能与一般任务定义中相同。 这可以递归使用。 仅当 state=present 时可用。 |
|
指定要执行的命令。 对于 command=find,如果定义了 parent_id 和 parent_type,则它将只在父级中搜索。否则,如果允许,将在根对象中搜索。 对于 command=find,如果指定了 id,则它将只返回与 id 匹配的单个实体。 对于 command=find,否则,如果定义了 match_filter,则它将使用该过滤器进行搜索。 对于 command=find,否则,如果定义了 properties,它将使用所有属性进行 AND 搜索。 对于 command=change_password,可以更改用户的密码。警告 - 如果密码与现有密码相同,它将抛出错误。 对于 command=wait_for_job,模块将等待作业的状态变为 SUCCESS 或 ERROR。如果找到 ERROR 状态,模块将以错误退出。 对于 command=wait_for_job,即使状态为 ERROR,也会始终返回作业。 需要定义 state 或 command,两者不能同时定义。 选项
|
|
您要操作的实体的 ID。 结合 command=find 使用时,它将只返回单个实体。 结合 state 使用时,它将更新或删除此实体。 在需要查找实体时,将优先于 match_filter 和 properties。 |
|
在查找实体时使用的过滤器(在 command 和 state 中),格式为 Nuage VSP API 预期的格式。 如果定义了 match_filter,它将优先于 properties,但不优先于 id。 |
|
您要操作的实体的父实体的 ID。 当指定 state 时,除非指定了 id,否则将从该父实体中收集实体(如果存在)。 当指定 command=find 时,除非指定了 id,否则将在该父实体中搜索实体。 如果指定,也需要指定 parent_type。 |
|
指定 ID 的父实体的类型(例如 Enterprise)。 这应与 VSPK-Python 中对象的 CamelCase 类名匹配。 可以在 https://nuagenetworks.github.io/vspkdoc/index.html 上找到此类名。 如果指定,也需要指定 parent_id。 |
|
属性是实体的不同属性的键值对。 如果没有指定 id 和 match_filter,则使用这些属性来查找或确定实体是否存在。 |
|
指定实体的所需状态。 如果 state=present,如果实体已存在,则在需要时将更新实体。 如果 state=present,如果与父实体的关系是成员关系,则将实体分配为父实体的成员。 如果 state=absent,如果与父实体的关系是成员关系,则将取消分配实体作为父实体的成员。 需要定义 state 或 command,两者不能同时定义。 选项
|
|
您要操作的实体类型(例如,企业)。 这应与 VSPK-Python 中对象的 CamelCase 类名匹配。 可以在 https://nuagenetworks.github.io/vspkdoc/index.html 上找到此类名。 |
备注
注意
支持检查模式,但有一些注意事项。它不会进行任何更改,如果可能,它会尝试确定是否能够执行请求的操作。
如果从之前的任务提供了父 ID,它可能为空,如果可以在根目录进行搜索,它将执行搜索,这可能会影响性能。
示例
# This can be executed as a single role, with the following vars
# vars:
# auth:
# api_username: csproot
# api_password: csproot
# api_enterprise: csp
# api_url: https://10.0.0.10:8443
# api_version: v5_0
# enterprise_name: Ansible-Enterprise
# enterprise_new_name: Ansible-Updated-Enterprise
#
# or, for certificate based authentication
# vars:
# auth:
# api_username: csproot
# api_certificate: /path/to/user-certificate.pem
# api_key: /path/to/user-Key.pem
# api_enterprise: csp
# api_url: https://10.0.0.10:8443
# api_version: v5_0
# enterprise_name: Ansible-Enterprise
# enterprise_new_name: Ansible-Updated-Enterprise
# Creating a new enterprise
- name: Create Enterprise
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: Enterprise
state: present
properties:
name: "{{ enterprise_name }}-basic"
register: nuage_enterprise
# Checking if an Enterprise with the new name already exists
- name: Check if an Enterprise exists with the new name
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: Enterprise
command: find
properties:
name: "{{ enterprise_new_name }}-basic"
ignore_errors: true
register: nuage_check_enterprise
# Updating an enterprise's name
- name: Update Enterprise name
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: Enterprise
id: "{{ nuage_enterprise.id }}"
state: present
properties:
name: "{{ enterprise_new_name }}-basic"
when: nuage_check_enterprise is failed
# Creating a User in an Enterprise
- name: Create admin user
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: User
parent_id: "{{ nuage_enterprise.id }}"
parent_type: Enterprise
state: present
match_filter: "userName == 'ansible-admin'"
properties:
email: "[email protected]"
first_name: "Ansible"
last_name: "Admin"
password: "ansible-password"
user_name: "ansible-admin"
register: nuage_user
# Updating password for User
- name: Update admin password
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: User
id: "{{ nuage_user.id }}"
command: change_password
properties:
password: "ansible-new-password"
ignore_errors: true
# Finding a group in an enterprise
- name: Find Administrators group in Enterprise
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: Group
parent_id: "{{ nuage_enterprise.id }}"
parent_type: Enterprise
command: find
properties:
name: "Administrators"
register: nuage_group
# Assign the user to the group
- name: Assign admin user to administrators
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: User
id: "{{ nuage_user.id }}"
parent_id: "{{ nuage_group.id }}"
parent_type: Group
state: present
# Creating multiple DomainTemplates
- name: Create multiple DomainTemplates
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: DomainTemplate
parent_id: "{{ nuage_enterprise.id }}"
parent_type: Enterprise
state: present
properties:
name: "{{ item }}"
description: "Created by Ansible"
with_items:
- "Template-1"
- "Template-2"
# Finding all DomainTemplates
- name: Fetching all DomainTemplates
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: DomainTemplate
parent_id: "{{ nuage_enterprise.id }}"
parent_type: Enterprise
command: find
register: nuage_domain_templates
# Deleting all DomainTemplates
- name: Deleting all found DomainTemplates
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: DomainTemplate
state: absent
id: "{{ item.ID }}"
with_items: "{{ nuage_domain_templates.entities }}"
when: nuage_domain_templates.entities is defined
# Unassign user from group
- name: Unassign admin user to administrators
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: User
id: "{{ nuage_user.id }}"
parent_id: "{{ nuage_group.id }}"
parent_type: Group
state: absent
# Deleting an enterprise
- name: Delete Enterprise
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: Enterprise
id: "{{ nuage_enterprise.id }}"
state: absent
# Setup an enterprise with Children
- name: Setup Enterprise and domain structure
connection: local
community.network.nuage_vspk:
auth: "{{ nuage_auth }}"
type: Enterprise
state: present
properties:
name: "Child-based-Enterprise"
children:
- type: L2DomainTemplate
properties:
name: "Unmanaged-Template"
children:
- type: EgressACLTemplate
match_filter: "name == 'Allow All'"
properties:
name: "Allow All"
active: true
default_allow_ip: true
default_allow_non_ip: true
default_install_acl_implicit_rules: true
description: "Created by Ansible"
priority_type: "TOP"
- type: IngressACLTemplate
match_filter: "name == 'Allow All'"
properties:
name: "Allow All"
active: true
default_allow_ip: true
default_allow_non_ip: true
description: "Created by Ansible"
priority_type: "TOP"
返回值
常见的返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
处理的实体列表。每个元素都是实体的 to_dict()。 返回值:在 state=present 和 find 时返回,如果 state=present 或 find=one,则只包含一个元素。 示例: |
|
找到、创建、更新或分配的实体的 ID。 返回值:在 state=present 和 command=find 时返回,如果找到一个实体。 示例: |
状态
此模块将在 6.0.0 版本中移除。[已弃用]
更多信息请参见 已弃用。