Spec-Zone.ru › Ansible

Модуль 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.

Варианты:

  • false ← (по умолчанию)
  • true

hostname

string / обязательный

Имя хоста или IP-адрес экземпляра ONTAP.

http_port

integer

Заменяет используемый по умолчанию порт (80 или 443) указанным портом.

https

boolean

Включает или отключает https.

Игнорируется при использовании REST, так как поддерживается только https.

Игнорируется при использовании аутентификации с помощью сертификата SSL, поскольку для нее требуется SSL.

Варианты:

  • false ← (по умолчанию)
  • true

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.

По умолчанию: "GET"

password

псевдонимы: pass

string

Пароль указанного пользователя.

query

dictionary

Список словарей параметров запроса

use_lambda

boolean

добавлено в netapp.ontap 23.4.0

Определяет, следует ли использовать прокси AWS Lambda для подключения к системе ONTAP.

Поддерживается только при использовании REST.

Варианты:

  • false ← (по умолчанию)
  • true

use_rest

string

Этот модуль поддерживает только REST.

always — всегда использовать REST API. Если модуль не поддерживает REST, выдается предупреждение.

По умолчанию: "always"

username

псевдонимы: user

string

Это может быть учетная запись с областью действия кластера или SVM — в зависимости от того, требуется ли API уровня кластера или SVM.

Дополнительные сведения см. в документации: https://docs.netapp.com/us-en/ontap/authentication/create-svm-user-accounts-task.html.

Поддерживаются два метода аутентификации.

  1. Базовая аутентификация с использованием имени пользователя и пароля.
  2. Аутентификация с помощью сертификата SSL с использованием файла сертификата SSL-клиента и, при необходимости, файла закрытого ключа.

Чтобы использовать сертификат, его необходимо установить в кластере ONTAP, а аутентификацию по сертификату — включить.

validate_certs

boolean

Если задано значение no, сертификаты SSL проверяться не будут.

Задавайте значение False только на сайтах под личным контролем, использующих самоподписанные сертификаты.

Варианты:

  • false
  • true ← (по умолчанию)

vserver_name

string

Если указан, принудительно включается туннелирование SVM. username задает учетную запись администратора кластера.

vserver_uuid

string

Если указан, принудительно включается туннелирование SVM. username задает учетную запись администратора кластера.

wait_for_completion

boolean

добавлено в netapp.ontap 21.14.0

Если значение true, запросы POST/PATCH/DELETE могут обрабатываться синхронно и асинхронно.

Если в ответе указано, что задание выполняется, его статус периодически проверяется до завершения.

Если значение false, вызов возвращается немедленно.

Варианты:

  • false ← (по умолчанию)
  • true

Примечания

Примечание

  • Поддерживается работа прокси 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.

Возвращается: всегда

Авторы

  • Команда NetApp Ansible (@carchi8py)

Ссылки на коллекцию

  • Отслеживание ошибок
  • Домашняя страница
  • Репозиторий (исходный код)

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API