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