L'API (RaaS) fait référence au serveur d'applications auquel les clients de SaltStack Config se connectent. Ces clients incluent le composant d'interface utilisateur de SaltStack Config, les masters correctement configurés et d'autres utilisateurs de RaaS. Le serveur d'applications est également appelé serveur eAPI.

Note :

La documentation complète de l'API pour SaltStack Config est disponible au format PDF sur le site de documentation de l'API de VMware : https://code.vmware.com/apis/1179/saltstack-config-raas.

RaaS est organisé en modules (appelés « ressources ») et en fonctions (appelées « méthodes »). Dans l'appel d'API test.echo («hello, world »), la ressource est test et la méthode est echo(). Les arguments peuvent être transmis aux méthodes par position ou par mot clé.

RaaS est accessible de deux manières : via un client RPC et via un pont HTTP (ou HTTPS).

Pour vous connecter à RaaS, définissez ces options dans client = APIClient() :

  • server
  • nom d'utilisateur
  • mot de passe
  • config_name='internal' Modifiez au nom du serveur principal d'authentification si vous utilisez LDAP
  • timeout=60 # Mettre au maximum 60 secondes pour effectuer n'importe quelle opération
  • ssl_key=None
  • ssl_cert=None
  • ssl_context=None
  • ssl_validate_cert=True = Définissez sur False en cas d'utilisation de certificat auto-signés

Exemple :

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

Dans les versions antérieures à 6.2, la connexion API était réalisée à l'aide de SyncClient.connect(), qui est toujours compatible avec les versions 6.2 et ultérieures. Si vous utilisez SyncClient.connect(), aucune modification n'est requise.

Syntaxe de l'API

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

Exemple :

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

Utilisation de l'API (RaaS) avec Curl

Vous pouvez également utiliser RaaS directement avec HTTP et JSON. Vous trouverez ci-dessous un exemple d'utilisation de l'API avec curl. Notez que lorsque xsrf est activé, vous devrez d'abord obtenir un cookie et un jeton xsrf. Consultez Pont HTTP sur l'obtention et l'utilisation d'un jeton et d'un cookie xsrf. Lors de l'utilisation du client API Python, cette opération est effectuée automatiquement par défaut.

Exemple :

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

Attribution de licence

L'interface utilisateur de SaltStack Config affiche des notifications pour avertir lorsque votre licence arrive à expiration. En tant qu'utilisateur RaaS, vous devez utiliser l'espace de travail Licence pour suivre l'état de la licence et vous assurer qu'elle reste active. Si votre licence expire, le service RaaS s'arrête.

Client RPC

Les clients RPC programmatiques dans le module sseapiclient utilisent Python version 2.7 et Python version 3.5, ou version ultérieure. Les clients se connectent à SSE via HTTP ou HTTPS et s'authentifient. Le client RPC a l'avantage d'être relativement plus facile à utiliser que le pont HTTP.

Pont HTTP

Le pont HTTP (ou HTTPS) accepte les charges utiles JSON soumises à un point de terminaison exposé par SSE, traduit les charges utiles en appels RPC, puis renvoie le résultat au format JSON. Le point de terminaison prend en charge l’authentification basée sur des cookies afin que les informations d’identification d’authentification ne doivent être transmises qu’une seule fois par session. Le pont permet également d'envoyer plusieurs appels dans une seule charge utile.

Si xsrf est activé (par défaut avec state install) dans /etc/raas/raas.conf tornado_xsrf_cookies_enabled: True , vous devrez fournir X-Xsrftoken: dans l'en-tête de l'appel REST. La meilleure approche consiste à enregistrer un cookie avec un appel get, puis d'utiliser le cookie pour fournir le jeton d'en-tête. Ce cookie est enregistré dans le répertoire $HOME (accueil des utilisateurs). La charge utile est un dictionnaire.

Exemple d'appel curl avec en-tête 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}
  }'

L'exemple utilise les hypothèses suivantes :

  • client=APIClient(<addr>,<user>, <pwd>)
  • Installation d'eAPI basée sur l'état par défaut
  • SSL activé
  • Importation de sseapiclient. Exemple :
    from sseapiclient import APIClient