Системный администратор может использовать облачный API-интерфейс для программного выполнения стандартных задач администрирования инфраструктуры, таких как назначение разрешений роли или пользователю, создание или обновление задания, просмотр возвращаемых результатов. sseapiclient можно установить в среде с главным сервером Salt или в среде без него.

Перед началом работы

Чтобы использовать sseapiclient, необходимо выполнить следующие предварительные требования.

  1. Если sseapiclient используется в среде с главным сервером Salt.
    1. а.Если на главном сервере Salt не установлен подключаемый модуль Master, см. инструкции по установке в разделе Установка и настройка подключаемого модуля Master. sseapiclient поставляется с подключаемым модулем Master и устанавливается при его установке.
    2. б.Убедитесь, что на главном сервере Salt установлен подключаемый модуль Master версии 8.11.1 или выше. Версию подключаемого модуля Master можно найти в рабочей области Подключаемые модули Master.

      Кроме того, обновить подключаемый модуль Master на главном сервере Salt можно через рабочую область Подключаемые модули Master. Дополнительные сведения см. в разделе Использование рабочей области «Подключаемые модули Master».

  2. Если sseapiclient используется в среде без главного сервера Salt.
    1. а.Выполните следующие команды, чтобы установить на устройство библиотеки Pika Python и PyJWT.
      pip3 install pika==1.3.1
      pip3 install pyjwt==2.4.0
    2. б.Загрузите последнюю версию sseapiclient из рабочей области Подключаемые модули Master. Затем выполните следующую команду, чтобы установить на устройство sseapiclient.
      pip3 install SSEApiClient-file-name.whl

      Дополнительные сведения см. в разделе Использование рабочей области «Подключаемые модули Master».

    3. в.Убедитесь, что версия sseapiclient совпадает с версией Automation Config. Версию Automation Config можно найти в рабочей области Подключаемые модули Master.
  3. Создайте задание в Automation Config. Дополнительные сведения см. в разделе Создание заданий .

Создание маркера API-интерфейса

Перед подключением к облачному API-интерфейсу необходимо создать маркер API-интерфейса с помощью консоли Cloud Services. Этот маркер используется для аутентификации главного сервера Salt в службе VMware Cloud Services.

  1. На панели инструментов консоли Cloud Services щелкните имя пользователя и выберите Моя учетная запись > Маркеры API.
  2. Выберите Создать маркер.

    Страница «Маркеры API» в CSP

  3. Заполните форму.

    Форма создания маркера в CSP

    1. а.Введите имя маркера.
    2. б.Выберите срок жизни (TTL) маркера. По умолчанию: шесть месяцев.
      Примечание: В случае компрометации маркер без срока действия может создать угрозу безопасности. Если такое произойдет, необходимо отозвать маркер.
    3. в.Определите области действия маркера.
      Scope Описание
      Роли служб

      Роли служб — это встроенные, предварительно определенные наборы разрешений, обеспечивающие доступ к VMware Cloud Services.

      Для доступа к службе Automation Config найдите Automation Config и выберите нужную роль службы. Список доступных ролей служб см. в разделе Определение ролей пользователей.

    4. г.(Необязательно) Задайте адрес электронной почты для получения напоминаний об истечении срока действия маркера.
    5. д.Нажмите кнопку Создать.

      Новый маркер API-интерфейса отобразится в окне Маркер создан.

  4. Сохраните учетные данные маркера в надежном месте.

    После создания маркера на странице Маркеры API будет отображаться только его имя, без учетных данных. Чтобы создать маркер еще раз, щелкните Создать повторно.

  5. Нажмите кнопку Продолжить.

Выполнить вызов API

Когда маркер API-интерфейса создан, вызов API-интерфейса можно выполнить с помощью sseapiclient или cURL.

Чтобы выполнить вызов API-интерфейса, сделайте следующее.

  1. Войдите в среду, где установлен sseapiclient.
  2. Выполните следующую команду, заменив значение сервера на URL-адрес Automation Config для конкретного региона и указав ранее созданный маркер API-интерфейса. В следующих примерах кода показан вызов API-интерфейса для региона США.
    Python
    from sseapiclient import APIClient
    client = APIClient(server='https://ssc-gateway.mgmt.cloud.vmware.com', csp_api_token='<api-token>')
    
    client.api.job.get_jobs()
    Python
    #For non-prod environments (e.g. scaleperf). Note the extra argument to the constructor:
    from sseapiclient import APIClient
    client = APIClient(server='https://ssc-gateway.scaleperf.symphony-dev.com', csp_api_token='<api-token>', csp_url='https://console-stg.cloud.vmware.com/')
    
    client.api.job.get_jobs()
    cURL
    SERVER="https://ssc-gateway.mgmt.cloud.vmware.com" && \
    API_TOKEN="<api-token>" && \
    BEARER_TOKEN=$(curl --silent 'https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode "api_token=$API_TOKEN" \
    | grep -o '"access_token":"[^"]*' | grep -o '[^"]*$') && \
    XSRFTOKEN=$(curl -s -I -X POST "$SERVER/account/login/" \
    --header "Authorization: Bearer $BEARER_TOKEN" \
    | awk '/X-XSRFTOKEN:|x-xsrftoken:/ {gsub("\r","",$2);print $2}') && \
    curl --location --request POST "$SERVER/rpc" \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $BEARER_TOKEN" \
    --header "X-XSRFTOKEN: $XSRFTOKEN" \
    --header "Cookie: _xsrf=$XSRFTOKEN; _xsrf=$XSRFTOKEN" \
    --data '{
        "resource": "job",
        "method": "get_jobs",
        "kwarg": {},
        "args": []
    }'
    Табл. 1. Региональные URL-адреса для Automation Config
    Регион URL-адрес Automation Config
    US (США) https://ssc-gateway.mgmt.cloud.vmware.com
    Германия https://de.ssc-gateway.mgmt.cloud.vmware.com
    Индия https://in.ssc-gateway.mgmt.cloud.vmware.com
    Канада https://ca.ssc-gateway.mgmt.cloud.vmware.com
    Австралия https://au.ssc-gateway.mgmt.cloud.vmware.com
    Великобритания https://uk.ssc-gateway.mgmt.cloud.vmware.com

Результаты

Конечная точка jobs.get_jobs() возвращает список всех заданий. В следующих примерах кода показан пример успешного ответа.
Python
RPCResponse(riq=3, ret={'count': 1, 'results': [{'uuid': '60c14cfc-09ca-4b5a-bc76-8294287c2e6c',
 'name': 'Check disk usage', 'desc': 'Checks disk usage on targeted devices', 'cmd': 'local',
 'tgt_uuid': '7f93b928-388b-11e6-b133-346895ecb8f3', 'fun': 'disk.usage', 'arg': {'arg': [], 'kwarg':
 {}}, 'masters': [], 'metadata': {'auth': {'owner': {'uuid': '8964e9f3-6864-4fe5-ba4a-ab4530caa8ca',
 'config_name': 'internal', 'username': 'root'}, 'access': {}}}, 'tgt_name': 'CentOS'}], 'limit': 50},
 error=None, warnings=[])
cURL
{'riq': 3, 'ret': {'count': 1, 'results': [{'uuid': '60c14cfc-09ca-4b5a-bc76-8294287c2e6c',
 'name': 'Check disk usage', 'desc': 'Checks disk usage on targeted devices', 'cmd': 'local',
 'tgt_uuid': '7f93b928-388b-11e6-b133-346895ecb8f3', 'fun': 'disk.usage', 'arg': {'arg': [], 'kwarg':
 {}}, 'masters': [], 'metadata': {'auth': {'owner': {'uuid': '8964e9f3-6864-4fe5-ba4a-ab4530caa8ca',
 'config_name': 'internal', 'username': 'root'}, 'access': {}}}, 'tgt_name': 'CentOS'}], 'limit': 50}, 'error': null, 'warnings': []}
Примечание: Для использования некоторых функций, например client.api.admin.trim_database(), требуются права администратора. Если у вас нет необходимых разрешений, API-интерфейс выдаст ошибку.

Чтобы использовать функции администрирования, создайте новый маркер API-интерфейса и выберите роль службы Привилегированный пользователь.

Следующие шаги

Дополнительные сведения о доступных ресурсах см. в документации по API-интерфейсу (RaaS) на портале VMware Developer.