Spec-Zone.ru › Ansible 2.9

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, будет выполнен поиск с использованием логического И со всеми свойствами.
При command=change_password, пароль пользователя может быть изменен. Предупреждение — в случае совпадения нового пароля со старым, будет возвращена ошибка.
При command=wait_for_job, модуль будет ожидать завершения задачи со статусом SUCCESS или ERROR. Если обнаружится статус ERROR, модуль завершится с ошибкой.
При command=wait_for_job, задача всегда будет возвращена, даже если состояние — ERROR.
Необходимо определить либо state, либо command, оба одновременно не могут быть определены.
id
-
Идентификатор сущности, над которой нужно выполнить операцию.
В сочетании с command=find возвращается только одна сущность.
В сочетании с state выполняется обновление или удаление этой сущности.
Будет иметь приоритет над match_filter и properties при необходимости поиска сущности.
match_filter
-
Фильтр, используемый при поиске (как в command, так и в state для сущностей, в формате, ожидаемом API Nuage VSP).
Если match_filter определен, он имеет приоритет над properties, но не над id
parent_id
-
Идентификатор родителя сущности, над которой нужно выполнить операцию.
Когда указано state, сущность будет взята из этого родителя, если он существует, иначе - если поиск возможен в корневом объекте, поиск будет произведен.
При command=find, сущность будет искаться в этом родителе, если не указан id.
Если указано, необходимо также указать parent_type.
parent_type
-
Тип родителя, для которого указан идентификатор (например, Предприятие).
Должен соответствовать имени класса сущности с использованием 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
- / обязательно
Тип сущности, над которой нужно выполнить операцию (например, Предприятие).
Должен соответствовать имени класса сущности с использованием 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, если найдена одна сущность.
Идентификатор сущности, которая была найдена, создана, обновлена или назначена.

Пример:
bae07d8d-d29c-4e2b-b6ba-621b4807a333


Статус

  • Данный модуль не гарантирует обратную совместимость интерфейса. [preview]
  • Этот модуль поддерживается сообществом Ansible. [community]

Авторы

  • 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.9/modules/nuage_vspk_module.html

Spec-Zone.ru

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