API-интерфейс (RaaS) — это сервер приложений, к которому подключаются клиенты SaltStack Config. К таким клиентам относятся интерфейс пользователя SaltStack Config, правильно настроенные главные серверы и другие пользователи RaaS. Сервер приложений также называется сервером eAPI.

RaaS состоит из модулей, которые называются «ресурсы», и функций, которые называются «методы». В вызове API test.echo('hello, world') test — это ресурс, а echo() — метод. Аргументы передаются в методы по позициям или по ключевым словам.

Доступ к RaaS можно получить двумя способами — через клиент RPC и через мост HTTP (или HTTPS).

Чтобы подключиться к RaaS, установите в client = APIClient() следующие параметры.

  • сервер
  • имя пользователя
  • пароль
  • config_name=’internal’. При использовании LDAP измените этот параметр на имя конечного сервера проверки подлинности.
  • timeout=60 #. Для выполнения любой операции установите время ожидания не более 60 секунд.
  • ssl_key=None
  • ssl_cert=None
  • ssl_context=None
  • ssl_validate_cert=True. При использовании самозаверяющих сертификатов выберите значение False.

Пример

from sseapiclient import APIClient
client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
Примечание:

В версиях до 6.2 подключение API-интерфейса выполнялось с помощью метода SyncClient.connect(), который совместим с версией 6.2 и последующими. Если используется SyncClient.connect(), изменения не требуются.

Синтаксис API-интерфейса

client.api.<interface>.<method>(parameter=parameter_value)

Пример

from sseapiclient import APIClient
client = APIClient('https://localhost', 'root', 'PASSWORD')
client.api.sec.download_content(auto_ingest=True)

Использование API-интерфейса (RaaS) с Curl

RaaS можно также использовать непосредственно с HTTP и JSON. Ниже приводится пример использования этого API-интерфейса с curl. Обратите внимание: если включен xsrf, сначала потребуется получить cookie-файл и маркер xsrf. О том, как получить и использовать маркер и cookie-файл xsrf, см. в разделе Мост HTTP. При использовании клиента Python API это действие выполняется автоматически по умолчанию.

Пример

curl --user 'root:PASSWORD' --url 'https://localhost/rpc' \
  --data '{
    "resource": "sec",
    "method": "download_content",
    "kwarg": {"auto_ingest": true}
  }'

Лицензирование

В интерфейсе пользователя SaltStack Config отображаются уведомления с предупреждением о том, что срок действия лицензии истекает. Для отслеживания и поддержания активного статуса лицензии пользователь RaaS должен использовать рабочую область «Лицензия». Если срок действия лицензии истекает, служба RaaS прекращает работу.

Клиент RPC

Программные клиенты RPC в модуле sseapiclient работают с Python версии 2.7, 3.5 или более поздней. Клиенты подключаются к SSE по протоколу HTTP или HTTPS и проходят проверку подлинности. Использование клиента RPC несколько проще, чем использование моста HTTP.

Мост HTTP

Мост HTTP (или HTTPS) принимает полезные данные JSON, передаваемые с помощью метода POST в конечную точку, которая предоставлена с помощью SSE, преобразовывает полезные данные в вызовы RPC, а затем возвращает результат в виде JSON. Конечная точка поддерживает проверку подлинности на базе cookie-файлов, поэтому учетные данные для проверки подлинности необходимо передавать только один раз за сеанс. Мост также позволяет отправлять несколько вызовов в одном наборе полезных данных.

Если включен xsrf (по умолчанию при установке на основе состояния) в /etc/raas/raas.conf tornado_xsrf_cookies_enabled: True, нужно будет указать X-Xsrftoken: в заголовке вызова rest. Наилучший способ — сохранить cookie-файл с помощью вызова get, а затем использовать этот cookie-файл для предоставления маркера заголовка. Этот cookie-файл сохраняется в каталоге $HOME (домашний каталог пользователей). Полезные данные используются в качестве словаря.

Пример вызова curl с заголовком xsrf

curl -k -c $HOME/eAPICookie.txt -u root:PASSWORD 'https://localhost/account/login' >/dev/null
curl -k -u root:PASSWORD -b $HOME/eAPICookie.txt \
  -H 'X-Xsrftoken: '$(grep -w '_xsrf' $HOME/eAPICookie.txt | cut -f7)'' \
  -X POST https://localhost/rpc \
  -d '{
    "resource": "sec",
    "method": "download_content",
    "kwarg": {"auto_ingest": true}
  }'

В этом примере предполагаются следующие условия.

  • client=APIClient(<addr>,<user>, <pwd>)
  • Установка eAPI на основе состояния, заданного по умолчанию
  • Протокол SSL включен
  • Импорт sseapiclient. Пример
    from sseapiclient import APIClient