Como administrador de sistemas, você pode usar a API de nuvem para concluir programaticamente tarefas comuns de administração de infraestrutura, como atribuir permissões a uma função ou usuário, criar ou atualizar um trabalho ou visualizar retornos de trabalhos. Você pode instalar sseapiclient em um ambiente com um mestre Salt ou um ambiente sem um mestre Salt.

Antes de começar

Antes de usar sseapiclient, conclua os seguintes pré-requisitos:

  1. Se estiver usando sseapiclient em um ambiente com um mestre Salt:
    1. Se você não tiver instalado o Master Plugin no mestre Salt, consulte Instalar e configurar o Master Plugin para obter instruções de instalação. sseapiclient é agrupado com o Master Plugin e é instalado quando você instala o plug-in.
    2. Verifique se você instalou o versão 8.11.1 ou posterior do Master Plugin no seu mestre Salt. Você pode encontrar a versão do Master Plugin no espaço de trabalho Master Plugins.

      Você também pode atualizar o Master Plugin no seu mestre Salt por meio do espaço de trabalho Master Plugins. Consulte Uso do espaço de trabalho Master Plugin para obter mais informações.

  2. Se você estiver usando sseapiclient em um ambiente sem um mestre Salt:
    1. Execute os seguintes comandos para instalar as bibliotecas Pika Python e PyJWT no seu dispositivo:
      pip3 install pika==1.3.1
      pip3 install pyjwt==2.4.0
    2. Baixe a versão mais recente do sseapiclient no espaço de trabalho Master Plugins. Em seguida, execute o seguinte comando para instalar sseapiclient no seu dispositivo:
      pip3 install SSEApiClient-file-name.whl

      Consulte Uso do espaço de trabalho Master Plugin para obter mais informações.

    3. Verifique se a versão do sseapiclient corresponde à versão do Automation Config. Você pode encontrar a versão do Automation Config no espaço de trabalho Master Plugins.
  3. Crie um trabalho no Automation Config. Consulte Como criar trabalhos para obter mais informações.

Gerar um token de API

Antes de poder se conectar à API de nuvem, você deve gerar um token de API usando o Console do Cloud Services. O token é usado para autenticar seu mestre Salt com o VMware Cloud Services.

  1. Na barra de ferramentas do Console do Cloud Services, clique no seu nome de usuário e selecione Minha Conta > Tokens de API.
  2. Clique em Gerar Token.

    Página Tokens de API no CSP

  3. Preencha o formulário.

    Gerar formulário de token no CSP

    1. Insira um nome para o token.
    2. Selecione a Vida Útil (TTL) do token. A duração padrão é de seis meses.
      Observação: "O token que não expira pode ser um risco de segurança, se comprometido." Se isso acontecer, você deverá revogar o token.
    3. Defina escopos para o token.
      Escopo Descrição
      Funções de serviço

      As funções de serviço são conjuntos predefinidos e integrados de permissões que concedem acesso ao VMware Cloud Services.

      Para acessar o serviço de Automation Config, procure o serviço Automation Config e selecione a função de serviço desejada. Para obter uma lista de funções de serviço disponíveis, consulte Como definir funções de usuário.

    4. (Opcional) Defina uma preferência de e-mail para receber um lembrete quando o token estiver prestes a expirar.
    5. Clique em Gerar.

      O token de API recém-gerado aparece na janela Gerado pelo Token.

  4. Salve as credenciais do token em um local seguro.

    Depois de gerar o token; você só poderá ver o nome do token na página Tokens de API e não nas credenciais. Para gerar novamente o token, clique em Gerar Novamente.

  5. Clique em Continuar.

Fazer uma chamada de API

Depois de gerar um token de API, você pode fazer uma chamada de API usando sseapiclient ou cURL.

Para fazer uma chamada de API:

  1. Faça login no ambiente no qual você instalou o sseapiclient.
  2. Execute o seguinte comando, substituindo o valor do servidor pela URL do Automation Config específica da região e pelo valor do token de API gerado anteriormente. As seguintes amostras de código mostram uma chamada de API na região dos EUA.
    Python
    from sseapiclient import APIClient
    client = APIClient(server='https://ssc-gateway.mgmt.cloud.vmware.com', csp_api_token='<api-token>')
    
    client.api.job.get_jobs()
    Python
    #For non-prod environments (e.g. scaleperf). Note the extra argument to the constructor:
    from sseapiclient import APIClient
    client = APIClient(server='https://ssc-gateway.scaleperf.symphony-dev.com', csp_api_token='<api-token>', csp_url='https://console-stg.cloud.vmware.com/')
    
    client.api.job.get_jobs()
    cURL
    SERVER="https://ssc-gateway.mgmt.cloud.vmware.com" && \
    API_TOKEN="<api-token>" && \
    BEARER_TOKEN=$(curl --silent 'https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode "api_token=$API_TOKEN" \
    | grep -o '"access_token":"[^"]*' | grep -o '[^"]*$') && \
    XSRFTOKEN=$(curl -s -I -X POST "$SERVER/account/login/" \
    --header "Authorization: Bearer $BEARER_TOKEN" \
    | awk '/X-XSRFTOKEN:|x-xsrftoken:/ {gsub("\r","",$2);print $2}') && \
    curl --location --request POST "$SERVER/rpc" \
    --header 'Content-Type: application/json' \
    --header "Authorization: Bearer $BEARER_TOKEN" \
    --header "X-XSRFTOKEN: $XSRFTOKEN" \
    --header "Cookie: _xsrf=$XSRFTOKEN; _xsrf=$XSRFTOKEN" \
    --data '{
        "resource": "job",
        "method": "get_jobs",
        "kwarg": {},
        "args": []
    }'
    Tabela 1. URLs regionais para o Automation Config
    Região URL do Automation Config
    US https://ssc-gateway.mgmt.cloud.vmware.com
    Alemanha https://de.ssc-gateway.mgmt.cloud.vmware.com
    Índia https://in.ssc-gateway.mgmt.cloud.vmware.com
    Canadá https://ca.ssc-gateway.mgmt.cloud.vmware.com
    Austrália https://au.ssc-gateway.mgmt.cloud.vmware.com
    Reino unido https://uk.ssc-gateway.mgmt.cloud.vmware.com

Resultados

O endpoint jobs.get_jobs() retorna uma lista de todos os trabalhos. Os exemplos de código a seguir mostram um exemplo de resposta bem-sucedida.
Python
RPCResponse(riq=3, ret={'count': 1, 'results': [{'uuid': '60c14cfc-09ca-4b5a-bc76-8294287c2e6c',
 'name': 'Check disk usage', 'desc': 'Checks disk usage on targeted devices', 'cmd': 'local',
 'tgt_uuid': '7f93b928-388b-11e6-b133-346895ecb8f3', 'fun': 'disk.usage', 'arg': {'arg': [], 'kwarg':
 {}}, 'masters': [], 'metadata': {'auth': {'owner': {'uuid': '8964e9f3-6864-4fe5-ba4a-ab4530caa8ca',
 'config_name': 'internal', 'username': 'root'}, 'access': {}}}, 'tgt_name': 'CentOS'}], 'limit': 50},
 error=None, warnings=[])
cURL
{'riq': 3, 'ret': {'count': 1, 'results': [{'uuid': '60c14cfc-09ca-4b5a-bc76-8294287c2e6c',
 'name': 'Check disk usage', 'desc': 'Checks disk usage on targeted devices', 'cmd': 'local',
 'tgt_uuid': '7f93b928-388b-11e6-b133-346895ecb8f3', 'fun': 'disk.usage', 'arg': {'arg': [], 'kwarg':
 {}}, 'masters': [], 'metadata': {'auth': {'owner': {'uuid': '8964e9f3-6864-4fe5-ba4a-ab4530caa8ca',
 'config_name': 'internal', 'username': 'root'}, 'access': {}}}, 'tgt_name': 'CentOS'}], 'limit': 50}, 'error': null, 'warnings': []}
Observação: Algumas funções exigem privilégios administrativos, como client.api.admin.trim_database(). Se você não tiver permissões suficientes, a API lançará um erro.

Para usar funções administrativas, você pode gerar um novo token de API e selecionar a função de serviço Superusuário.

O que fazer em seguida

Leia a documentação da API (RaaS) no VMware Developer Portal para saber mais sobre os recursos disponíveis.