Spec-Zone.ru › Ansible 2.4

aci_rest - Прямой доступ к REST API Cisco APIC

Новое в версии 2.4.

  • Обзор
  • Требования (к хосту, на котором выполняется модуль)
  • Параметры
  • Примеры
  • Возвращаемые значения
  • Примечания
    • Статус

Обзор

  • Обеспечивает управление Cisco ACI Fabric посредством прямого доступа к REST API Cisco APIC.
  • Дополнительную информацию о REST API Cisco APIC можно найти по адресу http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/2-x/rest_cfg/2_1_x/b_Cisco_APIC_REST_API_Configuration_Guide.html.

Требования (к хосту, на котором выполняется модуль)

  • lxml (при использовании XML-контента)
  • xmljson >= 0.1.8 (при использовании XML-контента)
  • python 2.7+ (при использовании xmljson)

Параметры

параметр обязательно по умолчанию варианты комментарии
content
нет
При использовании вместо src, напрямую задаёт содержимое запроса API.
Это может быть удобно для шаблонизации простых запросов, для сложных запросов используйте модуль template.
hostname
да
IP-адрес или имя хоста APIC, разрешимый управляющим хостом Ansible.
псевдонимы: host
method
да get
  • delete
  • get
  • post
HTTP-метод запроса.
Использование delete обычно используется для удаления объектов.
Использование get обычно используется для запроса объектов.
Использование post обычно используется для изменения объектов.
псевдонимы: action
password
да
Пароль для аутентификации.
path
да
URI, используемый для выполнения вызовов API.
Должен заканчиваться на .xml или .json.
псевдонимы: uri
src
нет
Имя абсолютного пути файла, содержащего тело HTTP-запроса, отправляемого в ACI Fabric.
псевдонимы: config_file
timeout
нет 30
Таймаут уровня сокета в секундах.
use_proxy
нет да
  • да
  • нет
Если no, прокси не будет использоваться, даже если он определён в переменной среды на целевых хостах.
use_ssl
нет да
  • да
  • нет
Если no, будет использовано HTTP-соединение вместо стандартного HTTPS-соединения.
username
да admin
Имя пользователя для аутентификации.
псевдонимы: user
validate_certs
нет да
  • да
  • нет
Если no, сертификаты SSL не будут проверены.
Это нужно установить только на контролируемых вами сайтах с самоподписанными сертификатами.

Примеры

- name: Add a tenant
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    method: post
    path: /api/mo/uni.xml
    src: /home/cisco/ansible/aci/configs/aci_config.xml
  delegate_to: localhost

- name: Add a tenant using inline YAML
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    validate_certs: no
    path: /api/mo/uni/tn-[Sales].json
    method: post
    content:
      fvTenant:
        attributes:
          name: Sales
          descr: Sales departement
  delegate_to: localhost

- name: Add a tenant using a JSON string
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    validate_certs: no
    path: /api/mo/uni/tn-[Sales].json
    method: post
    content: |
      {
        "fvTenant": {
          "attributes": {
            "name": "Sales",
            "descr": "Sales departement"
          }
        }
      }
  delegate_to: localhost

- name: Add a tenant using an XML string
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    validate_certs: no
    path: /api/mo/uni/tn-[Sales].xml
    method: post
    content: |
      <fvTenant name="Sales" descr="Sales departement"/>
  delegate_to: localhost

- name: Get tenants
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    method: get
    path: /api/node/class/fvTenant.json
  delegate_to: localhost

- name: Configure contracts
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    method: post
    path: /api/mo/uni.xml
    src: /home/cisco/ansible/aci/configs/contract_config.xml
  delegate_to: localhost

- name: Register leaves and spines
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    validate_certs: no
    method: post
    path: /api/mo/uni/controller/nodeidentpol.xml
    content: |
      <fabricNodeIdentPol>
        <fabricNodeIdentP name="{{ item.name }}" nodeId="{{ item.nodeid }}" status="{{ item.status }}" serial="{{ item.serial }}"/>
      </fabricNodeIdentPol>
  with_items:
  - '{{ apic_leavesspines }}'
  delegate_to: localhost

- name: Wait for all controllers to become ready
  aci_rest:
    hostname: '{{ inventory_hostname }}'
    username: '{{ aci_username }}'
    password: '{{ aci_password }}'
    validate_certs: no
    path: /api/node/class/topSystem.json?query-target-filter=eq(topSystem.role,"controller")
  register: apics
  until: "'totalCount' in apics and apics.totalCount|int >= groups['apic']|count"
  retries: 120
  delay: 30
  delegate_to: localhost
  run_once: yes

Возвращаемые значения

Общие возвращаемые значения описаны здесь Возвращаемые значения, следующие являются полями, уникальными для данного модуля:

имя описание возвращается тип пример
error_code
Код возврата ACI REST, полезный для отладки при ошибках
всегда int 122
error_text
Дескриптивный текст ACI REST, полезный для отладки при ошибках
всегда строка неизвестный тип управляемого объекта foo
imdata
Преобразованный результат, возвращённый REST API APIC (зарегистрируйте для последующей обработки)
всегда строка [{'error': {'attributes': {'text': 'неизвестный тип управляемого объекта foo', 'code': '122'}}}]
payload
(Шаблонное) содержимое, отправленное в REST API APIC (xml или json)
всегда строка <foo bar="boo"/>
raw
Необработанный результат, возвращённый REST API APIC (xml или json)
ошибка парсинга строка <?xml version="1.0" encoding="UTF-8"?><imdata totalCount="1"><error code="122" text="неизвестный тип управляемого объекта foo"/></imdata>
response
Строка HTTP-ответа
всегда строка HTTP-ошибка 400: Неверный запрос
status
Код состояния HTTP
всегда int 400
totalCount
Количество элементов в массиве imdata
всегда строка 0
url
URL, используемый для вызова APIC REST
успех строка https://1.2.3.4/api/mo/uni/tn-[Dag].json?rsp-subtree=modified

Примечания

Примечание

  • При использовании inline-JSON (используя content), YAML требует начала с пустой строки. Иначе оператор JSON будет интерпретирован как YAML-отображение (словарь) и переведён в невалидный JSON.
  • XML-содержимое требует библиотек python lxml и xmljson. Для JSON-содержимого ничего специального не нужно.
  • По умолчанию, если переменная окружения <protocol>_proxy установлена на целевом хосте, запросы будут отправлены через этот прокси. Это поведение можно переопределить, установив переменную для данной задачи (см. настройка среды), или с помощью параметра use_proxy.
  • HTTP-редиректы могут перенаправлять с HTTP на HTTPS, поэтому убедитесь, что ваша прокси-среда настроена корректно для обоих протоколов.

Статус

Этот модуль помечен как preview, что означает, что он не гарантирует обратную совместимость интерфейса.

Для получения помощи в разработке модулей, если у вас есть желание, пожалуйста, прочитайте Информация о сообществе и вклад, Тестирование Ansible и Разработка модулей.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/aci_rest_module.html

Spec-Zone.ru

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