nuage_vspk — Управление средами Nuage VSP
Новое в версии 2.4.
Обзор
- Управление или поиск сущностей Nuage VSP, включая создание, обновление, удаление, назначение, отмену назначения и поиск со всеми поддерживаемыми свойствами.
Требования
Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.
- Python 2.7
- Поддержка Nuage VSP 4.0Rx и 5.x.y
- Установленный VSPK-Python для вашей версии Nuage
- Проверено с NuageX https://nuagex.io
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| auth обязательно | Значение по умолчанию: None | Словарь с информацией об аутентификации, необходимой для подключения к среде 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). |
| children | Значение по умолчанию: None | Может быть использован для указания набора дочерних сущностей. Обязательным свойством каждой дочерней сущности является type. Поддерживаемые необязательные свойства каждой дочерней сущности — id, properties и match_filter. Функция каждого из этих свойств аналогична определению общей задачи. Может использоваться рекурсивно. Используется только в случае state=present. |
| command |
None | Указывает на команду, подлежащую выполнению. При 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 | Значение по умолчанию: None | Идентификатор сущности, с которой необходимо работать. В сочетании с command=find, возвращается только одна сущность. В сочетании с state, выполняется обновление или удаление этой сущности. Имеет приоритет над match_filter и properties при поиске сущности. |
| match_filter | Значение по умолчанию: None | Фильтр, используемый при поиске (как в command, так и в state для сущностей), в формате, ожидаемом API Nuage VSP. Если match_filter определен, он имеет приоритет над properties, но не над id
|
| parent_id | Значение по умолчанию: None | Идентификатор родительской сущности, с которой необходимо работать. Когда state указан, сущность будет взята из этой родительской сущности, если она существует, если не указан id. Когда command=find указан, сущность будет найдена в этой родительской сущности, если не указан id. Если указан, также необходимо указать parent_type. |
| parent_type | Значение по умолчанию: None | Тип родительской сущности, для которой указан id (например, Предприятие). Должен соответствовать имени класса объекта в VSPK-Python в формате CamelCase. Имя класса можно найти по адресу https://nuagenetworks.github.io/vspkdoc/index.html. Если указан, также необходимо указать parent_id. |
| properties | Значение по умолчанию: None | Свойства — пары ключ-значение для различных свойств сущности. Если не указан id и не указан match_filter, эти свойства используются для поиска или определения существования сущности. |
| state |
None | Указывает желаемое состояние сущности. Если state=present, если сущность уже существует, она будет обновлена, если это необходимо. Если state=present, если связь с родительской сущностью является членством, сущность будет назначена как член родительской сущности. Если state=absent, если связь с родительской сущностью является членством, сущность будет снята с членства в родительской сущности. Должен быть определен либо state, либо command, но не оба одновременно. |
| type обязательно | Значение по умолчанию: None | Тип сущности, с которой необходимо работать (например, Предприятие). Должен соответствовать имени класса объекта в VSPK-Python в формате CamelCase. Имя класса можно найти по адресу https://nuagenetworks.github.io/vspkdoc/index.html. |
Примечания
Примечание
- Режим проверки поддерживается, но с некоторыми оговорками. Он не будет вносить никаких изменений и, если возможно, попытается определить, может ли он выполнить запрос.
- Если идентификатор родителя был передан из предыдущей задачи, он может быть пустым, и если поиск возможен в корневом объекте, он будет выполнен, что может повлиять на производительность.
Примеры
# 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
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
nuage_vspk:
auth: "{{ nuage_auth }}"
type: Enterprise
command: find
properties:
name: "{{ enterprise_new_name }}-basic"
ignore_errors: yes
register: nuage_check_enterprise
# Updating an enterprise's name
- name: Update Enterprise name
connection: local
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
nuage_vspk:
auth: "{{ nuage_auth }}"
type: User
parent_id: "{{ nuage_enterprise.id }}"
parent_type: Enterprise
state: present
match_filter: "userName == 'ansible-admin'"
properties:
email: "ansible@localhost.local"
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
nuage_vspk:
auth: "{{ nuage_auth }}"
type: User
id: "{{ nuage_user.id }}"
command: change_password
properties:
password: "ansible-new-password"
ignore_errors: yes
# Finding a group in an enterprise
- name: Find Administrators group in Enterprise
connection: local
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
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
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
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
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
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
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
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"
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие являются полями, уникальными для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| entities список | При state=present и find, с одним элементом в случае state=present или find=one. | Список обработанных сущностей. Каждый элемент — to_dict() сущности. Пример: [{'status': 'RUNNING', 'assocEntityType': 'DOMAIN', 'parameters': None, 'command': 'BEGIN_POLICY_CHANGES', 'entityScope': 'ENTERPRISE', 'parentType': 'domain', 'lastUpdatedBy': '8a6f0e20-a4db-4878-ad84-9cc61756cd5e', 'externalID': None, 'result': None, 'lastUpdatedDate': 1487515656000, 'parentID': 'a22fddb9-3da4-4945-bd2e-9d27fe3d62e0', 'owner': '8a6f0e20-a4db-4878-ad84-9cc61756cd5e', 'progress': 0.0, 'creationDate': 1487515656000, 'ID': 'acabc435-3946-4117-a719-b8895a335830"'}] |
| id строка | При state=present и command=find в случае одной найденной сущности. | Идентификатор сущности, которая была найдена, создана, обновлена или назначена. Пример: bae07d8d-d29c-4e2b-b6ba-621b4807a333 |
Статус
Этот модуль помечен как предварительная версия, что означает, что его интерфейс не гарантируется как обратная совместимость.
Автор
- Philippe Dellaert (@pdellaert)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/modules/nuage_vspk_module.html