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 обязательно | Словарь с информацией об аутентификации, необходимой для подключения к среде 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 | Может использоваться для указания набора дочерних сущностей. Обязательным свойством каждой дочерней сущности является свойство type. Поддерживаемыми необязательными свойствами каждой дочерней сущности являются id, properties и match_filter. Функция каждого из этих свойств такая же, как и в общем определении задачи. Это можно использовать рекурсивно Используется только в случае state=present. | |
| command |
| Указывает команду, которую нужно выполнить. С command=find, если parent_id и parent_type определены, поиск будет производиться только в пределах родителя. В противном случае, если разрешено, поиск будет производиться в корневом объекте. С command=find, если 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 | ID сущности, над которой вы хотите работать. В сочетании с command=find, возвращается только одна сущность. В сочетании с state, обновляет или удаляет эту сущность. Предпочтение отдается match_filter и properties всякий раз, когда требуется найти сущность. | |
| match_filter | Фильтр, используемый при поиске (как в command, так и в state для сущностей) в формате, ожидаемом API Nuage VSP. Если match_filter определен, он имеет приоритет над properties, но не над id
| |
| parent_id | ID родителя сущности, над которой вы хотите работать. Когда state указан, сущность будет взята из этого родителя, если он существует, если не указан id. Когда указан command=find, сущность будет найдена в этом родителе, если не указан id. Если указан, parent_type также должен быть указан. | |
| parent_type | Тип родителя, для которого указан ID (например, Enterprise). Должно соответствовать имени класса CamelCase в VSPK-Python. Это имя класса можно найти на https://nuagenetworks.github.io/vspkdoc/index.html. Если указан, parent_id также должен быть указан. | |
| properties | Свойства — пары «ключ-значение» различных свойств сущности. Если не указан id и match_filter, используются для поиска или определения существования сущности. | |
| state |
| Указывает желаемое состояние сущности. Если state=present, в случае, если сущность уже существует, она будет обновлена, если это необходимо. Если state=present, в случае, если отношение с родителем — отношение членства, сущность будет назначена как член родителя. Если state=absent, в случае, если отношение с родителем — отношение членства, сущность будет отменена в качестве члена родителя. Необходимо определить либо state, либо command, оба значения не могут быть определены одновременно. |
| type обязательно | Тип сущности, над которой вы хотите работать (например, Enterprise). Должно соответствовать имени класса CamelCase в VSPK-Python. Это имя класса можно найти на 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() сущности. Пример: [{'ID': 'acabc435-3946-4117-a719-b8895a335830"', 'assocEntityType': 'DOMAIN', 'command': 'BEGIN_POLICY_CHANGES', 'creationDate': 1487515656000, 'entityScope': 'ENTERPRISE', 'externalID': None, 'lastUpdatedBy': '8a6f0e20-a4db-4878-ad84-9cc61756cd5e', 'lastUpdatedDate': 1487515656000, 'owner': '8a6f0e20-a4db-4878-ad84-9cc61756cd5e', 'parameters': None, 'parentID': 'a22fddb9-3da4-4945-bd2e-9d27fe3d62e0', 'parentType': 'domain', 'progress': 0.0, 'result': None, 'status': 'RUNNING'}] |
| id строка | При state=present и command=find в случае нахождения одной сущности. | ID сущности, которая была найдена, создана, обновлена или назначена. Пример: bae07d8d-d29c-4e2b-b6ba-621b4807a333 |
Статус
Этот модуль помечен как экспериментальный, что означает, что его интерфейс не гарантированно будет обратной совместимостью.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Более подробная информация приведена в разделе Техническое обслуживание модулей и поддержка.
Список других модулей, которые также поддерживаются сообществом Ansible, приведен здесь.
Автор
- 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.6/modules/nuage_vspk_module.html