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, задаёт содержимое запроса 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, будет использовано HTTP соединение вместо стандартного HTTPS соединения. |
| username строка | По умолчанию: "admin" | Имя пользователя для аутентификации. Псевдонимы: user |
| validate_certs булево |
| Если no, сертификаты SSL не будут валидированы.Это следует установить на no только при работе с сайтами, управляемыми лично, и использующими самозаверенные сертификаты. |
Примечания
Примечание
- Некоторые payload известны тем, что не являются идемпотентными, поэтому будьте осторожны при построении 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, полезный для отладки при ошибках Пример: unknown managed object class foo |
| imdata строка | всегда | Преобразованный вывод, возвращаемый APIC REST (зарегистрировать для последующей обработки) Пример: [{'error': {'attributes': {'code': '122', 'text': 'unknown managed object class foo'}}}] |
| payload строка | всегда | (Шаблонное) содержимое, отправляемое в APIC REST API (xml или json) Пример: <foo bar="boo"/> |
| raw строка | ошибка разбора | Необработанный вывод, возвращаемый APIC REST API (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.8/modules/aci_rest_module.html