Модуль netapp.ontap.na_ontap_restit — запуск любого REST API в ONTAP от NetApp
Примечание
Этот модуль входит в коллекцию netapp.ontap (версия 23.5.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install netapp.ontap. Для использования этого модуля необходимы дополнительные компоненты. Подробнее см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: netapp.ontap.na_ontap_restit.
Новое в netapp.ontap 20.4.0
Описание
- Выполняет вызов REST API в ONTAP.
- Вызовы REST API кластера выполняются с использованием учетной записи администратора кластера.
- Вызовы REST API SVM можно выполнять с использованием учетной записи vsadmin или туннелирования SVM (администратор кластера с параметрами vserver_).
- В случае успеха словарь json возвращается как
response. - В случае ошибки REST API параметры
status_code,error_code,error_messageзадаются для помощи в диагностике проблемы, - а вызов отмечается как ошибка («failed»).
- О других ошибках (например, проблемах с подключением) сообщается как об ошибках Ansible.
Требования
На узле, выполняющем этот модуль, должны быть установлены следующие компоненты.
- Ansible 2.9 или более поздней версии; рекомендуется версия 2.12 или более поздняя.
- Python 3; рекомендуется версия 3.9 или более поздняя.
- netapp-lib требуется только при использовании ZAPI (установите с помощью «pip install netapp-lib»). Обратите внимание, что netapp-lib устарела и больше не поддерживается. Используйте ее на свой риск.
- Физическая или виртуальная кластерная система Data ONTAP. Модули поддерживают Data ONTAP 9.1 и более поздние версии; для поддержки REST требуется ONTAP 9.6 или более поздняя версия.
Параметры
Параметр | Комментарии |
|---|---|
accept_header string добавлено в netapp.ontap 21.24.0 | Значение HTTP-заголовка запроса Accept. Требуется крайне редко, но необходимо для чтения файла (см. примеры). В большинстве случаев этот параметр можно не указывать. Задайте значение «multipart/form-data», если ожидается такой формат. По умолчанию модуль использует «application/json» или «application/hal+json», если параметр hal_linking имеет значение true. |
api string / обязательный | Вызываемый REST API (например, cluster/software, svms/svm). |
body псевдонимы: info dictionary | Словарь для параметра info |
cert_filepath string добавлено в netapp.ontap 20.6.0 | Путь к файлу сертификата SSL-клиента (.pem). Не поддерживается в Python 2.6. |
feature_flags dictionary добавлено в netapp.ontap 20.5.0 | Включение или отключение новой функции. Этот параметр можно использовать для включения экспериментальной функции или отключения новой функции, нарушающей обратную совместимость. Поддерживаемые ключи и значения могут измениться без предварительного уведомления. Неизвестные ключи игнорируются. |
files dictionary добавлено в netapp.ontap 21.24.0 | Словарь параметров для использования multipart/form-data. Требуется крайне редко, но необходим для записи файла (см. примеры). Если параметр указан, для запросов автоматически устанавливается заголовок Content-Type со значением multipart/form-data. |
force_ontap_version string добавлено в netapp.ontap 21.23.0 | Переопределяет версию ONTAP кластера при использовании REST. Поведение не определено, если версия не соответствует целевому кластеру. Этот параметр служит обходным решением, если из-за проблем с разрешениями невозможно прочитать версию кластера. См. https://github.com/ansible-collections/netapp.ontap/wiki/Known-issues. Значение должно иметь формат 9.10 или 9.10.1, причем каждый элемент должен быть целым числом. |
hal_linking boolean | Если значение true, в ответе возвращаются ссылки в формате HAL. Варианты:
|
hostname string / обязательный | Имя хоста или IP-адрес экземпляра ONTAP. |
http_port integer | Заменяет используемый по умолчанию порт (80 или 443) указанным портом. |
https boolean | Включает или отключает https. Игнорируется при использовании REST, так как поддерживается только https. Игнорируется при использовании аутентификации с помощью сертификата SSL, поскольку для нее требуется SSL. Варианты:
|
key_filepath string добавлено в netapp.ontap 20.6.0 | Путь к файлу ключа SSL-клиента. |
lambda_config dictionary добавлено в netapp.ontap 23.5.0 | Параметры конфигурации для работы прокси AWS Lambda. Этот параметр и его подопции поддерживаются только при использовании REST. |
|
aws_profile string |
Имя профиля AWS для аутентификации. |
|
aws_region string / обязательный |
Имя региона AWS. |
|
function_name string / обязательный |
Имя вызываемой функции AWS Lambda. |
method string | Используемый метод REST. По умолчанию: |
password псевдонимы: pass string | Пароль указанного пользователя. |
query dictionary | Список словарей параметров запроса |
use_lambda boolean добавлено в netapp.ontap 23.4.0 | Определяет, следует ли использовать прокси AWS Lambda для подключения к системе ONTAP. Поддерживается только при использовании REST. Варианты:
|
use_rest string | Этот модуль поддерживает только REST. always — всегда использовать REST API. Если модуль не поддерживает REST, выдается предупреждение. По умолчанию: |
username псевдонимы: user string | Это может быть учетная запись с областью действия кластера или SVM — в зависимости от того, требуется ли API уровня кластера или SVM. Дополнительные сведения см. в документации: https://docs.netapp.com/us-en/ontap/authentication/create-svm-user-accounts-task.html. Поддерживаются два метода аутентификации.
Чтобы использовать сертификат, его необходимо установить в кластере ONTAP, а аутентификацию по сертификату — включить. |
validate_certs boolean | Если задано значение Задавайте значение Варианты:
|
vserver_name string | Если указан, принудительно включается туннелирование SVM. username задает учетную запись администратора кластера. |
vserver_uuid string | Если указан, принудительно включается туннелирование SVM. username задает учетную запись администратора кластера. |
wait_for_completion boolean добавлено в netapp.ontap 21.14.0 | Если значение true, запросы POST/PATCH/DELETE могут обрабатываться синхронно и асинхронно. Если в ответе указано, что задание выполняется, его статус периодически проверяется до завершения. Если значение false, вызов возвращается немедленно. Варианты:
|
Примечания
Примечание
- Поддерживается работа прокси AWS Lambda. Пример использования см. в файле README.
- Модули с префиксом na_ontap предназначены для поддержки платформы хранения ONTAP.
- По умолчанию протокол https включен, и его рекомендуется использовать. Чтобы включить http в кластере, выполните следующие команды: «set -privilege advanced;» «system services web modify -http-enabled true;»
Примеры
-
name: Ontap REST API
hosts: localhost
gather_facts: false
vars:
login: &login
hostname: "{{ admin_ip }}"
username: "{{ admin_username }}"
password: "{{ admin_password }}"
https: true
validate_certs: false
svm_login: &svm_login
hostname: "{{ svm_admin_ip }}"
username: "{{ svm_admin_username }}"
password: "{{ svm_admin_password }}"
https: true
validate_certs: false
tasks:
- name: Run ontap REST API command as cluster admin
netapp.ontap.na_ontap_restit:
<<: *login
api: cluster/software
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==200
quiet: true
- name: Run ontap REST API command as cluster admin
netapp.ontap.na_ontap_restit:
<<: *login
api: cluster/software
query:
fields: version
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==200
quiet: true
- name: Run ontap REST API command as cluster admin
netapp.ontap.na_ontap_restit:
<<: *login
api: svm/svms
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==200
quiet: true
- name: Run ontap REST API command as cluster admin
netapp.ontap.na_ontap_restit:
<<: *login
api: svm/svms
query:
fields: aggregates,cifs,nfs,uuid
query_fields: name
query: trident_svm
hal_linking: true
register: result
- name: Run ontap REST API command as vsadmin
netapp.ontap.na_ontap_restit:
<<: *svm_login
api: svm/svms
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==200
quiet: true
- name: Run ontap REST API command as vserver tunneling
netapp.ontap.na_ontap_restit:
<<: *login
api: storage/volumes
vserver_name: ansibleSVM
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==200
quiet: true
- name: Store UUID
ansible.builtin.set_fact:
uuid: "{{ result.response.records | json_query(get_uuid) }}"
vars:
get_uuid: "[? name=='deleteme_ln1'].uuid"
- name: Run ontap REST API command as DELETE method with vserver tunneling
netapp.ontap.na_ontap_restit:
<<: *login
api: "storage/volumes/{{ uuid[0] }}"
method: DELETE
vserver_name: ansibleSVM
query:
return_timeout: 60
register: result
when: uuid | length == 1
- name: Assertions
ansible.builtin.assert:
that: result.skipped | default(false) or result.status_code | default(404) == 200
quiet: true
- name: Run ontap REST API command as POST method with vserver tunneling
netapp.ontap.na_ontap_restit:
<<: *login
api: storage/volumes
method: POST
vserver_name: ansibleSVM
query:
return_records: "true"
return_timeout: 60
body:
name: deleteme_ln1
aggregates:
- name: aggr1
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==201
quiet: true
- name: Run ontap REST API command as DELETE method with vserver tunneling
# delete test volume if present
netapp.ontap.na_ontap_restit:
<<: *login
api: "storage/volumes/{{ result.response.records[0].uuid }}"
method: DELETE
vserver_name: ansibleSVM
query:
return_timeout: 60
register: result
- name: Assertions
ansible.builtin.assert:
that: result.status_code==200
quiet: true
- name: Create a file
# assuming credentials are set using module_defaults
netapp.ontap.na_ontap_restit:
api: storage/volumes/f3c003cb-2974-11ed-b2f8-005056b38dae/files/laurent123.txt
method: post
files:
data: 'some data'
- name: Read a file
# assuming credentials are set using module_defaults
netapp.ontap.na_ontap_restit:
api: storage/volumes/f3c003cb-2974-11ed-b2f8-005056b38dae/files/laurent123.txt
method: get
accept_header: "multipart/form-data"
query:
length: 100
# error cases
- name: Run ontap REST API command
netapp.ontap.na_ontap_restit:
<<: *login
api: unknown/endpoint
register: result
ignore_errors: true
- name: Assertions
ansible.builtin.assert:
that: result.status_code==404
quiet: true
Возвращаемые значения
Общие возвращаемые значения описаны здесь; ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
error_code string | Если REST API был выполнен, но завершился с ошибкой, здесь указан код ошибки, заданный REST API. Отсутствует в случае успеха или если вызов REST API невозможно выполнить. Возвращается: при ошибке |
error_message string | Если REST API был выполнен, но завершился с ошибкой, здесь указано сообщение об ошибке, заданное REST API. Отсутствует в случае успеха или если вызов REST API невозможно выполнить. Возвращается: при ошибке |
response dictionary | В случае успеха — словарь json, возвращенный REST API. Если REST API был выполнен, но завершился с ошибкой, возвращается пустой словарь. Отсутствует, если вызов REST API невозможно выполнить. Возвращается: при успехе |
status_code string | Код состояния HTTP. Если wait_for_completion имеет значение True, принудительно устанавливается значение 0. Возвращается: всегда |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/netapp/ontap/na_ontap_restit_module.html