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, значение по умолчанию — private_key без расширения.Если для private_key был предоставлен контент в формате PEM, значение по умолчанию — username.Псевдонимы: cert_name | |
| content сырые данные | В случае использования вместо src, напрямую задает payload запроса к API.Это может быть удобно для шаблонизации простых запросов. Для сложных запросов используйте плагин поиска template (см. примеры) или модуль template с параметром src. | |
| host строка / обязательно | IP-адрес или имя хоста APIC, разрешаемое управляющим хостом Ansible. Псевдонимы: hostname | |
| method строка |
| HTTP-метод запроса. Использование delete обычно используется для удаления объектов.Использование get обычно используется для запроса объектов.Использование post обычно используется для изменения объектов.Псевдонимы: action |
| output_level строка |
| Влияет на вывод этого 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 или содержимое закрытого ключа, используемое для аутентификации на основе подписи. Это значение также влияет на значение по умолчанию certificate_name.Этот параметр исключает password. Если также предоставлен password, он будет проигнорирован.Псевдонимы: cert_key | |
| src путь | Имя абсолютного пути к файлу, содержащему тело HTTP-запроса, отправляемого в ACI Fabric. Если требуется шаблонизируемый payload, используйте параметр content вместе с плагином поиска template, или используйте модуль template.Псевдонимы: config_file | |
| timeout целое число | По умолчанию: 30 | Таймаут на уровне сокета в секундах. |
| use_proxy булево |
| Если no, прокси не будет использоваться, даже если он определён в переменной среды целевых хостов. |
| use_ssl булево |
| Если no, вместо стандартного HTTPS соединения будет использовано HTTP-соединение. |
| username строка | По умолчанию: "admin" | Имя пользователя для аутентификации. Псевдонимы: user |
| validate_certs булево |
| Если no, SSL-сертификаты не будут проверены.Это значение следует устанавливать в no только при использовании на сайтах с самоподписанными сертификатами, контролируемых пользователем. |
Примечания
Примечание
- Некоторые payload известны тем, что не являются идемпотентными, поэтому будьте осторожны при их построении, например, использование
status="created"вызовет проблемы с идемпотентностью, используйтеstatus="modified"вместо этого. Более подробная информация в документации ACI. - Некоторые payload (и используемые пути) известны тем, что сообщают об отсутствии изменений, когда изменения произошли. Это известная проблема APIC и была сообщена поставщику. Существует обходное решение для этой проблемы. Более подробная информация в документации ACI.
- XML payload требуют библиотек python
lxmlиxmljson. Для JSON payload ничего дополнительного не требуется.
См. также
См. также
- aci_tenant – Управление арендаторами (fv:Tenant)
- Официальная документация модуля aci_tenant.
- Руководство по конфигурации REST API Cisco APIC
- Дополнительная информация о REST API 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 department
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 department"
}
}
}
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, полезное для устранения неполадок при ошибках Пример: неизвестный класс управляемого объекта foo |
| imdata строка | всегда | Преобразованный вывод, возвращаемый API APIC REST (зарегистрируйте для последующей обработки) Пример: [{'error': {'attributes': {'code': '122', 'text': 'unknown managed object class foo'}}}] |
| 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 |
Состояние
- Данный модуль не гарантирует обратной совместимости интерфейса. [preview]
- Данный модуль поддерживается партнером Ansible. [certified]
Авторы
- 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.9/modules/aci_rest_module.html