Spec-Zone.ru › Ansible 2.6

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
Имя сертификата 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 dict.
info добавляет информационный вывод, включая previous, proposed и sent dicts.
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
Имя абсолютного пути к файлу, содержащему тело HTTP-запроса, отправляемого в ACI Fabric.
Если требуется шаблонный payload, используйте параметр content вместе с плагином поиска template или модуль template.

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

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

Примечания

Примечание

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

Примеры

- 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 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

- 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, полезный для отладки при ошибках

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

Пример:
[{'error': {'attributes': {'code': '122', 'text': 'unknown managed object class foo'}}}]
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="unknown managed object class foo"/></imdata>
response
строка
всегда
Строка HTTP ответа

Пример:
HTTP Error 400: Bad Request
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


Статус

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

Техническое обслуживание

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

Список других модулей, поддерживаемых сообществом 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.6/modules/aci_rest_module.html

Spec-Zone.ru

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