Spec-Zone.ru › Ansible 2.6

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
    Варианты:
  • find
  • change_password
  • wait_for_job
  • get_csp_enterprise
Указывает команду, которую нужно выполнить.
С 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
    Варианты:
  • present
  • absent
Указывает желаемое состояние сущности.
Если 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API