API-интерфейс (RaaS) — это сервер приложений, к которому подключаются клиенты SaltStack Config. К таким клиентам относятся интерфейс пользователя SaltStack Config, правильно настроенные главные серверы и другие пользователи RaaS. Сервер приложений также называется сервером eAPI.
Полная документация по API-интерфейсу SaltStack Config доступна в формате PDF на сайте документации по API-интерфейсу VMware:https://code.vmware.com/apis/1179/saltstack-config-raas
.
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