community.general.imc_rest – Управление оборудованием Cisco IMC через его REST API
Примечание
Этот плагин является частью коллекции community.general (версия 2.0.1).
Для его установки используйте: ansible-galaxy collection install community.general.
Для использования в книге задач укажите: community.general.imc_rest.
Обзор
- Предоставляет прямой доступ к REST API Cisco IMC.
- Выполняет любые изменения конфигурации и действия, поддерживаемые Cisco IMC.
- Дополнительную информацию о REST API IMC можно найти на странице http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/c/sw/api/3_0/b_Cisco_IMC_api_301.html
Требования
Ниже перечислены требования к хосту, на котором будет выполняться данный модуль.
- lxml
- xmljson >= 0.1.8
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| content строка | При использовании вместо path, напрямую задает содержимое запросов к API.Это может быть удобно для шаблонизации простых запросов, для чего-либо сложного используйте модуль ansible.builtin.template. Вы можете объединить несколько фрагментов XML IMC, и они будут обрабатываться последовательно в одном потоке, выход Cisco IMC впоследствии объединяется. Параметр content взаимно исключает параметр path. | |
| hostname строка / обязательно | IP-адрес или имя хоста Cisco IMC, разрешимый хостом управления Ansible. псевдонимы: host, ip | |
| password строка | По умолчанию: "password" | Пароль для аутентификации. |
| path строка | Имя абсолютного пути к файлу, содержащему тело HTTP-запроса, отправляемого в REST API Cisco IMC. Параметр path взаимно исключает параметр content. псевдонимы: src, config_file | |
| protocol строка |
| Протокол подключения. |
| timeout строка | По умолчанию: 60 | Тайм-аут сокета в секундах. Это время, которое может быть затрачено каждой отдельной соединением (каждым фрагментом). Если этот timeout достигнут, модуль завершится с Connection failure, указывающим, что The read operation timed out. |
| username строка | По умолчанию: "admin" | Имя пользователя для входа на коммутатор. псевдонимы: user |
| validate_certs логическое значение |
| Если no, сертификаты SSL не будут проверены.Это следует установить только для no на сайтах, контролируемых лично, использующих самозаверяющие сертификаты. |
Примечания
Примечание
- Фрагментам XML не требуется cookie аутентификации, это автоматически вставляется модулем.
- Выход XML Cisco IMC преобразуется в JSON с использованием соглашения Cobra.
- Любое изменение запрошенное configConfMo имеет возвращаемый статус «изменён», даже если фактических изменений по сравнению с предыдущей конфигурацией не было. В результате, данный модуль всегда будет сообщать об изменении при последующих запусках. В случае, если это поведение будет исправлено в будущих обновлениях Cisco IMC, данный модуль автоматически адаптируется.
- Если вы получаете
Connection failureв связи сThe read operation timed out, увеличьте параметрtimeout. Некоторые фрагменты XML могут занимать больше времени, чем предусмотрено тайм-аутом. - Дополнительную информацию о REST API IMC можно найти на странице http://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/c/sw/api/3_0/b_Cisco_IMC_api_301.html
Примеры
- name: Power down server
community.general.imc_rest:
hostname: '{{ imc_hostname }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: no
content: |
<configConfMo><inConfig>
<computeRackUnit dn="sys/rack-unit-1" adminPower="down"/>
</inConfig></configConfMo>
delegate_to: localhost
- name: Configure IMC using multiple XML fragments
community.general.imc_rest:
hostname: '{{ imc_hostname }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: no
timeout: 120
content: |
<!-- Configure Serial-on-LAN -->
<configConfMo><inConfig>
<solIf dn="sys/rack-unit-1/sol-if" adminState="enable" speed=="115200" comport="com0"/>
</inConfig></configConfMo>
<!-- Configure Console Redirection -->
<configConfMo><inConfig>
<biosVfConsoleRedirection dn="sys/rack-unit-1/bios/bios-settings/Console-redirection"
vpBaudRate="115200"
vpConsoleRedirection="com-0"
vpFlowControl="none"
vpTerminalType="vt100"
vpPuttyKeyPad="LINUX"
vpRedirectionAfterPOST="Always Enable"/>
</inConfig></configConfMo>
delegate_to: localhost
- name: Enable PXE boot and power-cycle server
community.general.imc_rest:
hostname: '{{ imc_hostname }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: no
content: |
<!-- Configure PXE boot -->
<configConfMo><inConfig>
<lsbootLan dn="sys/rack-unit-1/boot-policy/lan-read-only" access="read-only" order="1" prot="pxe" type="lan"/>
</inConfig></configConfMo>
<!-- Power cycle server -->
<configConfMo><inConfig>
<computeRackUnit dn="sys/rack-unit-1" adminPower="cycle-immediate"/>
</inConfig></configConfMo>
delegate_to: localhost
- name: Reconfigure IMC to boot from storage
community.general.imc_rest:
hostname: '{{ imc_host }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: no
content: |
<configConfMo><inConfig>
<lsbootStorage dn="sys/rack-unit-1/boot-policy/storage-read-write" access="read-write" order="1" type="storage"/>
</inConfig></configConfMo>
delegate_to: localhost
- name: Add customer description to server
community.general.imc_rest:
hostname: '{{ imc_host }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: no
content: |
<configConfMo><inConfig>
<computeRackUnit dn="sys/rack-unit-1" usrLbl="Customer Lab - POD{{ pod_id }} - {{ inventory_hostname_short }}"/>
</inConfig></configConfMo>
delegate_to: localhost
- name: Disable HTTP and increase session timeout to max value 10800 secs
community.general.imc_rest:
hostname: '{{ imc_host }}'
username: '{{ imc_username }}'
password: '{{ imc_password }}'
validate_certs: no
timeout: 120
content: |
<configConfMo><inConfig>
<commHttp dn="sys/svc-ext/http-svc" adminState="disabled"/>
</inConfig></configConfMo>
<configConfMo><inConfig>
<commHttps dn="sys/svc-ext/https-svc" adminState="enabled" sessionTimeout="10800"/>
</inConfig></configConfMo>
delegate_to: localhost
Возвращаемые значения
Общие возвращаемые значения описаны в этом разделе, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| aaLogin словарь | успех | Выход XML Cisco IMC для входа, преобразованный в JSON с использованием соглашения Cobra. Пример: "attributes": { "cookie": "", "outCookie": "1498902428/9de6dc36-417c-157c-106c-139efe2dc02a", "outPriv": "admin", "outRefreshPeriod": "600", "outSessionId": "114", "outVersion": "2.0(13e)", "response": "yes" } |
| configConfMo словарь | успех | Выход XML Cisco IMC для любых фрагментов configConfMo, преобразованный в JSON с использованием соглашения Cobra. |
| elapsed целое число | всегда | Затраченное время в секундах Пример: 31 |
| error словарь | неудача | Выход XML Cisco IMC об ошибке последнего запроса, преобразованный в JSON с использованием соглашения Cobra. Пример: "attributes": { "cookie": "", "errorCode": "ERR-xml-parse-error", "errorDescr": "XML PARSING ERROR: Element 'computeRackUnit', attribute 'admin_Power': The attribute 'admin_Power' is not allowed. ", "invocationResult": "594", "response": "yes" } |
| error_code строка | неудача | Код ошибки Cisco IMC. Пример: ERR-xml-parse-error |
| error_text строка | неудача | Сообщение об ошибке Cisco IMC. Пример: XML PARSING ERROR: Element 'computeRackUnit', attribute 'admin_Power': The attribute 'admin_Power' is not allowed. |
| input строка | неудача | НЕОБРАБОТАННЫЙ XML-ввод, отправленный в Cisco IMC, вызвавший ошибку. Пример: <configConfMo><inConfig><computeRackUnit dn="sys/rack-unit-1" admin_Power="down"/></inConfig></configConfMo> |
| output строка | неудача | НЕОБРАБОТАННЫЙ XML-вывод, полученный от Cisco IMC, с подробными сведениями об ошибке. Пример: <error cookie="" response="yes" errorCode="ERR-xml-parse-error" invocationResult="594" errorDescr="XML PARSING ERROR: Element 'computeRackUnit', attribute 'admin_Power': The attribute 'admin_Power' is not allowed.\n"/> |
| response строка | всегда | Сообщение HTTP-ответа, включая длину содержимого. Пример: OK (729 байт) |
| status словарь | всегда | Код состояния HTTP-ответа. Пример: 200 |
Авторы
- Dag Wieers (@dagwieers)
© 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/community/general/imc_rest_module.html