La API (RaaS) hace referencia al servidor de aplicaciones al que se conectan los clientes de SaltStack Config. Estos clientes incluyen el componente de interfaz de usuario de SaltStack Config, maestros configurados correctamente y otros usuarios de RaaS. El servidor de aplicaciones también se conoce como el servidor de eAPI.

RaaS se organiza en módulos (denominados “recursos”) y funciones (denominadas “métodos”). En la llamada de API test.echo(‘hello, world’), el recurso es test y el método es echo(). Es posible transferir los argumentos a los métodos por posición o por palabra clave.

Se puede acceder a RaaS de dos maneras: a través de un cliente RPC y a través de un puente HTTP (o HTTPS).

Para conectarse a RaaS, establezca estas opciones en client = APIClient():

  • servidor
  • nombre de usuario
  • contraseña
  • config_name=’internal’ (Se debe cambiar al nombre de back-end de la autenticación si se utiliza LDAP)
  • timeout=60 # (Se debe tardar como máximo 60 segundos en realizar cualquier operación)
  • ssl_key=None
  • ssl_cert=None
  • ssl_context=None
  • ssl_validate_cert=True (Se debe establecer en False si se usan certificados autofirmados)

Ejemplo:

from sseapiclient import APIClient
client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
Nota:

En las versiones anteriores a 6.2, la conexión de API se realizaba mediante SyncClient.connect(), lo que aún es compatible con las versiones 6.2 y posteriores. Si se utiliza SyncClient.connect(), no es necesario realizar ningún cambio.

Sintaxis de la API

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

Ejemplo:

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

Usar la API (RaaS) con Curl

También se puede utilizar RaaS directamente con HTTP y JSON. A continuación, se muestra un ejemplo del uso de la API con curl. Tenga en cuenta que, cuando se habilita xsrf, primero es necesario obtener una cookie y un token xsrf. Consulte Puente HTTP para conocer la forma de obtener y utilizar una cookie y un token xsrf. Cuando se utiliza el cliente API de Python, esto se realiza automáticamente de forma predeterminada.

Ejemplo:

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

Concesión de licencias

La interfaz de usuario de SaltStack Config muestra notificaciones para advertir cuando la licencia está a punto de caducar. Como usuario de RaaS, debe utilizar el área de trabajo Licencia para realizar un seguimiento del estado de la licencia y asegurarse de que permanezca activa. Si la licencia caduca, el servicio RaaS se detiene.

Cliente RPC

Los clientes RPC de programación en el módulo sseapiclient funcionan con las versiones de Python 2.7, 3.5 o posteriores. Los clientes se conectan a SSE a través de HTTP o HTTPS y se autentican. El cliente RPC ofrece la ventaja de ser un poco más fácil de usar que el puente HTTP.

Puente HTTP

El puente HTTP (o HTTPS) acepta cargas útiles JSON registradas en un endpoint expuesto por SSE, traduce las cargas útiles en llamadas RPC y, a continuación, devuelve el resultado como JSON. El endpoint admite la autenticación basada en cookies, por lo que las credenciales de autenticación solo se deben pasar una vez por sesión. El puente también permite el envío de varias llamadas en una sola carga útil.

Si se habilita xsrf (es el valor predeterminado con la instalación de estado) en el archivo /etc/raas/raas.conf, opción tornado_xsrf_cookies_enabled: True, es necesario proporcionar X-Xsrftoken: en el encabezado de la llamada rest. Lo mejor es guardar una cookie con una llamada get y, posteriormente, utilizar la cookie para proporcionar el token de encabezado. Esta cookie se guarda en el directorio $HOME (el principal de los usuarios). La carga útil es un diccionario.

Ejemplo de llamada curl con encabezado 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}
  }'

En los ejemplos, se asume lo siguiente:

  • client=APIClient(<addr>, <user>, <pwd>)
  • Instalación predeterminada basada en estado de eAPI
  • SSL habilitado
  • Importación de sseapiclient. Ejemplo:
    from sseapiclient import APIClient