Spec-Zone.ru › Ansible 2.10

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

Примечание

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

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

Примечания

Примечание

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

См. также

См. также

cisco.aci.aci_tenant

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

Руководство по конфигурации API Cisco APIC REST

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

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

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

Пример:
[{'error': {'attributes': {'code': '122', 'text': 'unknown managed object class foo'}}}]
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 400: Ошибка запроса
status
целое число
всегда
Код состояния HTTP

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

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

Пример:
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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/cisco/aci/aci_rest_module.html

Spec-Zone.ru

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