Spec-Zone.ru › Ansible 2.10

netapp.ontap.na_ontap_restit – NetApp ONTAP Выполнить любой REST API на ONTAP

Примечание

Этот плагин входит в коллекцию netapp.ontap (версия 20.12.0).

Для его установки используйте: ansible-galaxy collection install netapp.ontap

Для использования в книге задач укажите: netapp.ontap.na_ontap_restit

В версии 20.4.0: коллекции netapp.ontap

  • Описание
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Значения возврата

Описание

  • Вызов REST API на ONTAP.
  • REST API кластера выполняются с использованием учетной записи администратора кластера.
  • REST API сервера виртуальных машин можно выполнять с использованием учетной записи vsadmin или с использованием туннелирования сервера виртуальных машин (администратор кластера с параметрами vserver_).
  • В случае успеха возвращается словарь JSON, как response
  • В случае ошибки REST API, status_code, error_code, error_message устанавливаются для помощи в диагностике проблемы,
  • и вызов отмечается как ошибка («failed»).
  • Другие ошибки (например, проблемы с подключением) сообщаются как ошибка Ansible.

Требования

Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.

  • Физическая или виртуальная кластеризованная система Data ONTAP. Модули поддерживают Data ONTAP 9.1 и более поздние версии.
  • Поддержка REST требуется для ONTAP 9.6 или более поздних версий.
  • Ansible 2.6
  • Настоятельно рекомендуется использовать Ansible 2.9 или более поздние версии, так как это позволяет использовать новую систему доставки коллекций.
  • Python2 netapp-lib (2017.10.30) или более поздние версии. Установите с помощью «pip install netapp-lib»
  • Python3 netapp-lib (2018.11.13) или более поздние версии. Установите с помощью «pip install netapp-lib»
  • netapp-lib 2020.3.12 настоятельно рекомендуется, так как он обеспечивает более подробное сообщение об ошибках при подключении.
  • Для включения http в кластере необходимо выполнить следующие команды: «set -privilege advanced;» «system services web modify -http-enabled true;»

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api
строка / обязательно
Выполняемый REST API (например, cluster/software, svms/svm).
body
словарь
Словарь для параметра info

псевдонимы: info
cert_filepath
строка
добавлен в 20.6.0 от netapp.ontap
путь к файлу сертификата SSL клиента (.pem).
не поддерживается с python 2.6.
feature_flags
словарь
добавлен в 20.5.0 от netapp.ontap
Включить или отключить новую функцию.
Это может быть использовано для включения экспериментальной функции или отключения новой функции, которая нарушает обратную совместимость.
Поддерживаемые ключи и значения могут быть изменены без предварительного уведомления. Неизвестные ключи игнорируются.
hal_linking
булево
    Варианты:
  • нет ←
  • да
если true, HAL-кодированные ссылки возвращаются в ответе.
hostname
строка / обязательно
Имя хоста или IP-адрес экземпляра ONTAP.
http_port
целое число
Переопределить порт по умолчанию (80 или 443) с этим портом
https
булево
    Варианты:
  • нет ←
  • да
Включить и отключить https.
Игнорируется при использовании REST, так как поддерживается только https.
Игнорируется при использовании аутентификации по сертификату SSL, так как требуется SSL.
key_filepath
строка
добавлен в 20.6.0 от netapp.ontap
путь к файлу закрытого ключа SSL клиента.
method
строка
Значение по умолчанию:
"GET"
Метод REST для использования.
ontapi
целое число
Версия API ontap для использования
password
строка
Пароль для указанного пользователя.

псевдонимы: pass
query
словарь
Список словарей для параметров запроса
use_rest
строка
Значение по умолчанию:
"auto"
REST API, если это поддерживается целевой системой для всех ресурсов и атрибутов, необходимых модулю. В противном случае вернется к ZAPI.
всегда -- всегда будет использовать REST API
никогда -- всегда будет использовать ZAPI
авто -- попытается использовать REST API
username
строка
Это может быть учетная запись уровня кластера или SVM, в зависимости от того, требуется API на уровне кластера или на уровне SVM.
Дополнительную информацию можно найти в документации https://mysupport.netapp.com/NOW/download/software/nmsdk/9.4/.
Поддерживаются два метода аутентификации
1. аутентификация по основанию, с использованием имени пользователя и пароля,
2. аутентификация по сертификату SSL, с использованием файла сертификата SSL-клиента и, по желанию, файла закрытого ключа.
Для использования сертификата он должен быть установлен в кластере ONTAP, и аутентификация по сертификату должна быть включена.

псевдонимы: user
validate_certs
булево
    Варианты:
  • нет
  • да ←
Если установлено значение no, сертификаты SSL не будут проверены.
Это следует установить только в False используемых на сайтах, контролируемых лично, с использованием самозаверяющих сертификатов.
vserver_name
строка
если указано, принудительно включить туннелирование сервера виртуальных машин. имя пользователя идентифицирует учетную запись администратора кластера.
vserver_uuid
строка
если указано, принудительно включить туннелирование сервера виртуальных машин. имя пользователя идентифицирует учетную запись администратора кластера.

Примечания

Примечание

  • Модули с префиксом na_ontap разработаны для поддержки платформы хранилищ ONTAP.

Примеры

-
  name: Ontap REST API
  hosts: localhost
  gather_facts: False
  collections:
    - netapp.ontap
  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
      na_ontap_restit:
        <<: *login
        api: cluster/software
      register: result
    - debug: var=result
    - assert: { that: result.status_code==200, quiet: True }

    - name: run ontap REST API command as cluster admin
      na_ontap_restit:
        <<: *login
        api: cluster/software
        query:
          fields: version
      register: result
    - debug: var=result
    - assert: { that: result.status_code==200, quiet: True }

    - name: run ontap REST API command as cluster admin
      na_ontap_restit:
        <<: *login
        api: svm/svms
      register: result
    - debug: var=result
    - assert: { that: result.status_code==200, quiet: True }

    - name: run ontap REST API command as cluster admin
      na_ontap_restit:
        <<: *login
        api: svm/svms
        query:
          fields: aggregates,cifs,nfs,uuid
          query_fields: name
          query: trident_svm
        hal_linking: true
      register: result
    - debug: var=result

    - name: run ontap REST API command as vsadmin
      na_ontap_restit:
        <<: *svm_login
        api: svm/svms
      register: result
    - debug: var=result
    - assert: { that: result.status_code==200, quiet: True }

    - name: run ontap REST API command as vserver tunneling
      na_ontap_restit:
        <<: *login
        api: storage/volumes
        vserver_name: ansibleSVM
      register: result
    - debug: var=result
    - assert: { that: result.status_code==200, quiet: True }
    - set_fact:
        uuid: "{{ result.response.records | json_query(get_uuid) }}"
      vars:
        get_uuid: "[? name=='deleteme_ln1'].uuid"
    - debug: var=uuid

    - name: run ontap REST API command as DELETE method with vserver tunneling
      na_ontap_restit:
        <<: *login
        api: "storage/volumes/{{ uuid[0] }}"
        method: DELETE
        vserver_name: ansibleSVM
        query:
          return_timeout: 60
      register: result
      when: uuid|length == 1
    - debug: var=result
    - 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
      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
    - debug: var=result
    - 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
      na_ontap_restit:
        <<: *login
        api: "storage/volumes/{{ result.response.records[0].uuid }}"
        method: DELETE
        vserver_name: ansibleSVM
        query:
          return_timeout: 60
      register: result
    - debug: var=result
    - assert: { that: result.status_code==200, quiet: True }

# error cases
    - name: run ontap REST API command
      na_ontap_restit:
        <<: *login
        api: unknown/endpoint
      register: result
      ignore_errors: True
    - debug: var=result
    - assert: { that: result.status_code==404, quiet: True }

Значения возврата

Общие значения возврата документированы здесь, следующие являются полями, уникальными для этого модуля:

Ключ Возвращаемое значение Описание
error_code
строка
При ошибке
Если REST API был выполнен, но завершился ошибкой, код ошибки, установленный REST API.
Отсутствует при успешном выполнении или если вызов REST API не может быть выполнен.

error_message
строка
При ошибке
Если REST API был выполнен, но завершился ошибкой, сообщение об ошибке, установленное REST API.
Отсутствует при успешном выполнении или если вызов REST API не может быть выполнен.

response
словарь
При успехе
Если успешно, словарь JSON, возвращенный REST API.
Если REST API был выполнен, но завершился ошибкой, пустой словарь.
Отсутствует, если вызов REST API не может быть выполнен.

status_code
строка
Всегда
Код состояния http.



Авторы

  • Команда NetApp Ansible (@carchi8py) <ng-ansibleteam@netapp.com>

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/netapp/ontap/na_ontap_restit_module.html

Spec-Zone.ru

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