Spec-Zone.ru › Ansible 2.11

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

Примечание

Этот плагин входит в состав коллекции cisco.aci (версия 2.0.0).

Для его установки используйте: ansible-galaxy collection install cisco.aci.

Для использования в плейбуке укажите: cisco.aci.aci_rest.

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

Обзор

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

Требования

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

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

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
annotation
строка
Пользовательская строка для аннотирования объекта.
Если значение не указано в задаче, используется значение переменной среды ACI_ANNOTATION.
certificate_name
строка
Имя сертификата X.509, прикрепленного к пользователю APIC AAA, используемому для аутентификации на основе подписи.
Если был предоставлен файл с именем private_key, по умолчанию используется имя файла private_key, без расширения.
Если для private_key был предоставлен контент в формате PEM, по умолчанию используется значение username.
Если значение не указано в задаче, используется значение переменной среды ACI_CERTIFICATE_NAME.

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

Псевдонимы: 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 информацию
Если значение не указано в задаче, используется значение переменной среды ACI_OUTPUT_LEVEL.
output_path
строка
Путь к файлу, в который будут выведены JSON-конфигурации объектов ACI, сгенерированные модулем.
Если значение не указано в задаче, используется значение переменной среды ACI_OUTPUT_PATH.
owner_key
строка
Пользовательская строка для атрибута ownerKey объекта ACI.
Этот атрибут представляет ключ, позволяющий клиентам владеть своими данными для корреляции сущностей.
Если значение не указано в задаче, используется значение переменной среды ACI_OWNER_KEY.
owner_tag
строка
Пользовательская строка для атрибута ownerTag объекта ACI.
Этот атрибут представляет тег, позволяющий клиентам добавлять свои данные.
Например, для указания того, кто создал этот объект.
Если значение не указано в задаче, используется значение переменной среды ACI_OWNER_TAG.
password
строка
Пароль для аутентификации.
Этот параметр взаимно исключающий с private_key. Если задан private_key, он будет использован вместо этого.
Если значение не указано в задаче, используется значение переменных среды ACI_PASSWORD или ANSIBLE_NET_PASSWORD.
path
строка / обязательно
URI, используемый для выполнения API-вызовов.
Должен заканчиваться на .xml или .json.

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

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

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

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

Примечания

Примечание

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

См. также

См. также

cisco.aci.aci_tenant

Официальная документация по модулю cisco.aci.aci_tenant.

Cisco APIC REST API Configuration Guide

Дополнительная информация об API APIC REST.

Руководство Cisco ACI

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

Разработка модулей Cisco ACI

Подробное руководство по написанию собственных модулей Cisco ACI для внесения вклада.

Примеры

- name: Add a tenant using certificate authentication
  cisco.aci.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/
  cisco.aci.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
  cisco.aci.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 department
  delegate_to: localhost

- name: Add a tenant using a JSON string
  cisco.aci.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 department"
          }
        }
      }
  delegate_to: localhost

- name: Add a tenant using an XML string
  cisco.aci.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
  cisco.aci.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
  cisco.aci.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
  cisco.aci.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
  cisco.aci.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
строка
всегда
Преобразованный вывод, возвращаемый API APIC REST (зарегистрируйте это для последующей обработки)

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

Пример:
<foo bar="boo"/>
raw
строка
ошибка разбора
Необработанный вывод, возвращаемый API APIC REST (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


Авторы

  • Dag Wieers (@dagwieers)
  • Cindy Zhao (@cizhao)

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

Spec-Zone.ru

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