Spec-Zone.ru › Ansible 2.5

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

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

  • Обзор
    • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения
  • Статус
    • Автор

Обзор

  • Обеспечивает управление Cisco ACI fabric посредством прямого доступа к REST API Cisco APIC.
  • Благодаря идемпотентности APIC, этот модуль также является идемпотентным и отслеживает изменения.

Требования

Ниже перечислены требования, необходимые на хосте, выполняющем этот модуль.

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
certificate_name Значение по умолчанию:
имя_файла_ключ(private_key)
Имя X.509 сертификата, прикреплённого к пользователю APIC AAA, используемого для аутентификации на основе подписи.
По умолчанию используется значение private_key без расширения.

псевдонимы: cert_name
content
При использовании вместо src, задаёт содержимое запроса API напрямую.
Это удобно для шаблонизации простых запросов, для сложных случаев используйте модуль template.
host
обязательно
IP-адрес или имя хоста APIC, разрешаемое управляющим хостом Ansible.

псевдонимы: hostname
method
    Варианты:
  • delete
  • get ←
  • post
HTTP-метод запроса.
Использование delete обычно используется для удаления объектов.
Использование get обычно используется для запроса объектов.
Использование post обычно используется для изменения объектов.

псевдонимы: action
output_level
    Варианты:
  • debug
  • info
  • normal ←
Влияет на вывод этого модуля ACI.
normal означает стандартный вывод, включая current dict
info означает информационный вывод, включая previous, proposed и sent dicts
debug означает отладочный вывод, включая filter_string, method, response, status и url информацию
password
обязательно
Пароль для аутентификации.
path
обязательно
URI, используемый для выполнения API-вызовов.
Должен заканчиваться на .xml или .json.

псевдонимы: uri
port Значение по умолчанию:
443 (для https) и 80 (для http)
Номер порта для подключения REST.
private_key
Файл в формате PEM, содержащий ваш закрытый ключ, используемый для аутентификации на основе подписи.
Имя ключа (без расширения) используется как имя сертификата в ACI, если не указано certificate_name.

псевдонимы: cert_key
src
Имя абсолютного пути к файлу, содержащему тело http-запроса, отправляемого в ACI fabric.

псевдонимы: config_file
timeout Значение по умолчанию:
30
Таймаут на уровне сокета в секундах.
use_proxy
    Варианты:
  • no
  • yes ←
Если no, не будет использоваться прокси, даже если он определён в переменной окружения на целевых хостах.
use_ssl
    Варианты:
  • no
  • yes ←
Если no, вместо стандартного HTTPS будет использоваться HTTP-соединение.
username
обязательно
Значение по умолчанию:
admin
Имя пользователя для аутентификации.

псевдонимы: user
validate_certs
    Варианты:
  • no
  • yes ←
Если no, сертификаты SSL не будут проверяться.
Это следует использовать только на контролируемых сайтах с самоподписанными сертификатами.

Примечания

Примечание

  • Известно, что некоторые payloads не являются идемпотентными, поэтому будьте осторожны при построении payloads, например, использование status="created" приведёт к проблемам с идемпотентностью, используйте status="modified" вместо этого. Дополнительная информация в документации ACI.
  • Некоторые payloads (и используемые пути) известны тем, что сообщают об отсутствии изменений, когда изменения произошли. Это известная проблема APIC и была сообщена поставщику. Существует обходной путь для этой проблемы. Дополнительная информация в документации ACI.
  • XML payloads требуют библиотек python lxml и xmljson. Для JSON payloads ничего специального не нужно.
  • Дополнительная информация о REST API APIC доступна в Руководстве по конфигурации REST API Cisco APIC.
  • По умолчанию, если на целевом хосте установлена переменная окружения <protocol>_proxy, запросы будут отправляться через этот прокси. Это поведение можно переопределить, задав переменную для этой задачи (см. установка среды) или используя параметр use_proxy.
  • HTTP-переадресации могут перенаправлять с HTTP на HTTPS, поэтому необходимо убедиться, что ваша среда прокси для обоих протоколов корректна.

Примеры

- name: Add a tenant using certifcate authentication
  aci_rest:
    host: apic
    username: admin
    private_key: pki/admin.key
    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:
    host: apic
    username: admin
    private_key: pki/admin.key
    validate_certs: no
    path: /api/mo/uni.json
    method: post
    content:
      fvTenant:
        attributes:
          name: Sales
          descr: Sales departement
  delegate_to: localhost

- name: Add a tenant using a JSON string
  aci_rest:
    host: apic
    username: admin
    private_key: pki/admin.key
    validate_certs: no
    path: /api/mo/uni.json
    method: post
    content:
      {
        "fvTenant": {
          "attributes": {
            "name": "Sales",
            "descr": "Sales departement"
          }
        }
      }
  delegate_to: localhost

- name: Add a tenant using an XML string
  aci_rest:
    host: apic
    username: admin
    private_key: pki/{{ aci_username}}.key
    validate_certs: no
    path: /api/mo/uni.xml
    method: post
    content: '<fvTenant name="Sales" descr="Sales departement"/>'
  delegate_to: localhost

- name: Get tenants using password authentication
  aci_rest:
    host: apic
    username: admin
    password: SomeSecretPassword
    method: get
    path: /api/node/class/fvTenant.json
  delegate_to: localhost

- name: Configure contracts
  aci_rest:
    host: apic
    username: admin
    private_key: pki/admin.key
    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:
    host: apic
    username: admin
    private_key: pki/admin.key
    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:
    host: apic
    username: admin
    private_key: pki/admin.key
    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
int
всегда
Код возврата REST ACI, полезный для устранения неполадок при ошибках

Пример:
122
error_text
строка
всегда
Дескриптивный текст REST ACI, полезный для устранения неполадок при ошибках

Пример:
неизвестный класс управляемого объекта foo
imdata
строка
всегда
Преобразованный вывод, возвращаемый APIC REST (зарегистрируйте для последующей обработки)

Пример:
[{'error': {'attributes': {'text': 'неизвестный класс управляемого объекта foo', 'code': '122'}}}]
payload
строка
всегда
(Шаблонный) 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
int
всегда
Код состояния HTTP

Пример:
400
totalCount
строка
всегда
Количество элементов в массиве imdata

Пример:
0
url
строка
успех
URL, используемый для вызова APIC REST

Пример:
https://1.2.3.4/api/mo/uni/tn-[Dag].json?rsp-subtree=modified


Статус

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

Автор

  • Dag Wieers (@dagwieers)

Подсказка

Если вы заметите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.

© 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/aci_rest_module.html

Spec-Zone.ru

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