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 - |
| HTTP-метод запроса. Использование delete обычно используется для удаления объектов.Использование get обычно используется для запроса объектов.Использование post обычно используется для изменения объектов.Псевдонимы: action |
| output_level - |
| Влияет на вывод этого модуля ACI. normal — стандартный вывод, включая словарь currentinfo добавляет информационный вывод, включая словари previous, proposed и sentdebug добавляет отладочный вывод, включая информацию 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, прокси не будет использоваться, даже если он определен в переменной среды на целевых хостах. |
| use_ssl логическое |
| Если no, будет использоваться HTTP-соединение вместо стандартного HTTPS. |
| username - | По умолчанию: "admin" | Имя пользователя для аутентификации. Псевдонимы: user |
| validate_certs логическое |
| Если 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