A API (RaaS) refere-se ao servidor de aplicativos ao qual os clientes do SaltStack Config se conectam. Esses clientes incluem o componente de interface do usuário do SaltStack Config, mestres devidamente configurados e outros usuários de RaaS. O servidor de aplicativos também é conhecido como servidor de eAPI.
O RaaS está organizado em módulos (chamados de “recursos”) e funções (chamadas de “métodos”). Na chamada da API test.echo (“hello, world”), o recurso é test e o método é echo(). Argumentos podem ser transmitidos para métodos por posição ou por palavra-chave.
O RaaS pode ser acessado de duas maneiras: por meio de um cliente RPC e de uma ponte HTTP (ou HTTPS).
Para se conectar ao RaaS, defina estas opções no cliente = APIClient():
- server
- username
- password
- config_name=’internal’ Alterar para o nome do back-end da autenticação se estiver usando LDAP
- timeout=60 # Levar no máximo 60 segundos para executar qualquer operação
- ssl_key=Nenhum
- ssl_cert=Nenhum
- ssl_context=Nenhum
- ssl_validate_cert=True = Definir como False se estiver usando certificados autoassinados
Exemplo:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD', ssl_validate_cert=False)
Nas versões anteriores à 6.2, a conexão com a API era feita usando SyncClient.connect()
, que ainda é compatível com as versões 6.2 e posteriores. Se você estiver usando SyncClient.connect()
, nenhuma alteração será necessária.
Sintaxe da API
client.api.<interface>.<method>(parameter=parameter_value)
Exemplo:
from sseapiclient import APIClient client = APIClient('https://localhost', 'root', 'PASSWORD') client.api.sec.download_content(auto_ingest=True)
Usando a API (RaaS) com o Curl
Você também pode usar o RaaS diretamente com HTTP e JSON. Veja a seguir um exemplo de uso da API com curl
. Observe que, quando o xsrf estiver ativado, você precisará obter um cookie e um token xsrf primeiro. Consulte Ponte HTTP sobre como obter e usar um cookie e um token xsrf. Ao usar o cliente da API Python, isso é feito automaticamente por padrão.
Exemplo:
curl --user 'root:PASSWORD' --url 'https://localhost/rpc' \ --data '{ "resource": "sec", "method": "download_content", "kwarg": {"auto_ingest": true} }'
Licenciamento
A interface de usuário do SaltStack Config exibe notificações para avisar quando a sua licença está prestes a expirar. Como usuário do RaaS, você deve usar o espaço de trabalho Licença para acompanhar o status da licença e garantir que ela permaneça ativa. Se a licença expirar, o serviço RaaS será interrompido.
Cliente RPC
Os clientes RPC programáticos no módulo sseapiclient funcionam com o Python versão 2.7 e o Python versão 3.5 ou posterior. Os clientes conectam-se ao SSE via HTTP ou HTTPS e se autenticam. Usar o cliente RPC tem a vantagem de ser um processo um pouco mais fácil do que usar a ponte HTTP.
Ponte HTTP
A ponte HTTP (ou HTTPS) aceita payloads JSON enviadas por POST a um endpoint exposto pelo SSE, converte essas payloads em chamadas RPC e depois retorna o resultado como JSON. O endpoint oferece suporte para autenticação baseada em cookies e, portanto, credenciais de autenticação precisam ser transmitidas apenas uma vez por sessão. A ponte também permite o envio de várias chamadas em uma única payload.
Se o xsrf estiver ativado (padrão com a instalação de estado) em /etc/raas/raas.conf tornado_xsrf_cookies_enabled: True, você precisará fornecer X-Xsrftoken: no cabeçalho da chamada REST. A melhor maneira é salvar um cookie com uma chamada GET e, em seguida, usar esse cookie para fornecer o token de cabeçalho. Esse cookie é salvo no diretório $HOME (users home). A payload é um dicionário.
Exemplo de chamada curl com cabeçalho 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} }'
As amostras assumem o seguinte:
- client=APIClient(<addr>,<user>, <pwd>)
- Instalação baseada em estado padrão da eAPI
- SSL ativado
- Importação de sseapiclient. Exemplo:
from sseapiclient import APIClient