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)
Observação:

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