Spec-Zone.ru › Ansible 2.7

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

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

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Значения возврата
  • Статус

Обзор

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

Требования

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

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

Параметры

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

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

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

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

Псевдонимы: uri
port
-
Порт, используемый для подключения REST.
Значение по умолчанию зависит от параметра `use_ssl`.
private_key
- / обязательно
Файл в формате PEM, содержащий ваш закрытый ключ, используемый для аутентификации на основе подписи.
Имя ключа (без расширения) используется в качестве имени сертификата в ACI, если не указан certificate_name.
Этот параметр исключает password. Если указан password, он будет проигнорирован.

Псевдонимы: cert_key
src
path
Имя абсолютного пути к файлу, содержащему тело HTTP-запроса, отправляемого в ACI fabric.
Если требуется шаблонизированный payload, используйте параметр content вместе с плагином поиска template или модуль template.

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

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

Примечания

Примечание

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

См. также

См. также

Руководство по Cisco ACI
Подробная информация о том, как управлять вашей инфраструктурой ACI с помощью Ansible.
Разработка модулей Cisco ACI
Подробное руководство по написанию собственных модулей Cisco ACI для внесения вклада.

Примеры

- name: Add a tenant using certificate 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 from a templated payload file from templates/
  aci_rest:
    host: apic
    username: admin
    private_key: pki/admin.key
    method: post
    path: /api/mo/uni.xml
    content: "{{ lookup('template', 'aci/tenant.xml.j2') }}"
  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
  register: query_result

- 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
целое число
всегда
Код возврата REST ACI, полезный для устранения неполадок при ошибках

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

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

Пример:
[{'error': {'attributes': {'code': '122', 'text': 'unknown managed object class foo'}}}]
payload
строка
всегда
(Шаблонный) payload, отправляемый API REST APIC (xml или json)

Пример:
<foo bar="boo"/>
raw
строка
ошибка разбора
Необработанный вывод, возвращаемый API REST APIC (xml или json)

Пример:
<?xml version="1.0" encoding="UTF-8"?><imdata totalCount="1"><error code="122" text="unknown managed object class foo"/></imdata>
response
строка
всегда
Строка HTTP ответа

Пример:
HTTP Error 400: Bad Request
status
целое число
всегда
Код состояния HTTP

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

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

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


Статус

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

Авторы

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

Spec-Zone.ru

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