Trabalhar com políticas de agentes

As políticas do agente (designação) dizem ao Schematics qual agente usar para executar tarefas de área de trabalho e ações em uma zona de rede específica. Cada agente possui uma ou mais políticas associadas a ele para identificar a área de trabalho e as tarefas de ação que são executadas no agente Por exemplo, os agentes podem existir e as tarefas podem ser executadas nas seguintes zonas isoladas:

  • regiões de nuvem (region-1, region-2, region-3)
  • zonas de VPC para a camada de aplicativo, camada de dados, camada de gerenciamento
  • cloud-fornecedores ou no local
  • zonas departamentais da sua organização, como HR, Finance, Manufacturing

Apenas uma única política pode ser associada a uma área de trabalho ou ação. A criação de política falhará se houver uma política existente que tenha como destino as mesmas áreas de trabalho ou as ações.

É possível criar, atualizar e excluir um agent assignment policy usando a CLI do Schematics comandos de política.

O agent-assignment-policy para um agente é definido usando os atributos a seguir de uma área de trabalho ou ação. Os atributos de seleção podem ser uma combinação dos seguintes sinalizadores:

  • tags-áreas de trabalho ou ações com identificações de usuário correspondentes são selecionadas
  • locations-áreas de trabalho ou ações no local Schematics correspondente são selecionadas.
  • resource-groups-as áreas de trabalho ou ações com o grupo de recursos correspondente são selecionadas

Se a política de seleção para agent-1 especificar tags=[dev] e resource-group=[rg-2], o Schematics encaminha automaticamente as tarefas do espaço de trabalho — incluindo download do Git e tarefas de planeamento, aplicação e destruição do Terraform para todos os espaços de trabalho que atendam aos critérios tags e resource-group — para execução no agent-1.

Criação de uma política de agente usando a interface do usuário

  1. Faça login no consoleIBM Cloud.
  2. Clique no ícone de hambúrguer Menu > Automação da plataforma > Schematics > Extensões > guia Políticas > Criar política.
    • Na seção Criar uma política:
      • Digite o endereço exclusivo Nome da política.
      • Digite a descrição.
      • Selecione Tipo de política como a política de designação do agente
      • Selecione Local e Grupo de recursos na opção suspensa.
      • Insira Tags para o agente..
      • Clique em Avançar.
    • Na seção Parâmetros de política:
      • Selecione seu agente na lista suspensa.
      • Na seção Definir atributos de política,
        • Selecione Tipo de objeto como workspace ou action..
        • Selecione Grupo de recursos.
        • Selecione Localização do objeto
        • Insira Tags de objeto
        • Clique em Avançar.
      • Na seção Visualização de política
        • Selecione as áreas de trabalho que precisam fazer parte de sua política
  3. Clique em Criar.

Listando todas as políticas usando a IU

  1. Faça login no consoleIBM Cloud.
  2. Clique no ícone de hambúrguer Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.

Exibindo uma política usando a IU

  1. Faça login no consoleIBM Cloud.
  2. Clique no ícone de hambúrguer Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
  3. Clique em sua política na lista para visualizar os detalhes da política
  4. Na janela Agente Designado, clique em Detalhes do agente para visualizar as configurações de seu agente

Atualizando uma política do agente usando a UI

É possível atualizar uma política de agente para alterar as tags de seleção ou descrição, fazendo referência ao agente com o AGENT_ID.

  1. Faça login no consoleIBM Cloud.
  2. Clique no ícone de hambúrguer Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
  3. Clique em sua política na lista para visualizar os detalhes da política
  4. Clique em Ações > Editar política e atualize os parâmetros

Exclusão de uma política por meio da interface do usuário

  1. Faça login no consoleIBM Cloud.
  2. Clique no ícone de hambúrguer Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
  3. Clique em sua política na lista para visualizar os detalhes da política
  4. Clique em Ações > Excluir política para excluir os parâmetros..

Criação de uma política de agente usando a CLI

Crie sua política de agente usando a CLI. Para obter a lista completa de opções de política do agente, consulte o doc de comandos de política

Antes de Iniciar:

  • Instale ou atualize a versão do Schematics plug-in para ser 1.12.12 ou superior.
  • Selecione a região do IBM Cloud na qual o agente está definido. Configure a região CLI executando o comando ibmcloud target -r <region>.
  • Crie um arquivo de políticas do agente

Definindo um arquivo de política JSON

Um arquivo de políticas JSON de amostra é fornecido aqui.. Substitua os itens temporários <...> pelos valores reais.

  • As tarefas do agente nas quais devem ser executadas são definidas usando o bloco target
  • Os atributos para selecionar a área de trabalho ou ações para executar no agente são definidos pelo bloco parameter.

Os arquivos JSON de política podem ser editadas em qualquer editor ou IDE. Eles devem ser JSON válido.

Sintaxe do arquivo JSON de política:

  {
      "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "<agent id>"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [{
          "kind": "workspace",
          "tags": [
            "<user_tag>"
          ],
          "resource_groups": [
            "<resource_group>"
          ],
          "locations": [
            "<region>"
          ]
        }]
      }
    }
  }

Exemplo

  {
      "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent-prod-live.deA.e055"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [{
          "kind": "workspace",
          "tags": [
            "live-prod"
          ],
          "resource_groups": [
            "Default"
          ],
          "locations": [
            "eu-de"
          ]
        }]
      }
    }
  }

Criar política do agente

Exemplo

ibmcloud schematics policy create --name agent-policy-testing-cli-jan-10 --kind agent_assignment_policy --location eu-de --resource-group Default --target-file policy.json

Saída

Creating policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10-27   
Description         
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   aac37f57b20142dba1a435c70aeb12df   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod

Listar todas as políticas usando a CLI

É possível exibir a lista de políticas definidas em sua conta usando o comando policy list

Exemplo

ibmcloud schematics policy list

Saída

Retrieving policies...
OK
Name                                          ID                                                     Description                                   Kind   Tags   
agent-policy-testing-cli-jan-10               agent-policy-testing-cli-jan-10.deP.c737                                                                    workspace-policy:prod   
policy-023e7204-c33d-49b8-a9f3-695ff085290d   policy-023e7204-c33d-49b8-a9f3-695ff085290d.gbP.8b3c   Created agent-assignment-policy for the ...             
policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb   policy-067dfb28-928b-4e90-ad2b-9d26343a1ceb.deP.796d   Created agent-assignment-policy for
                                                                                       
Showing 1-3 of 3 items

Exibindo uma política usando a CLI

É possível visualizar a configuração de uma política de agente com o comando policy get

Exemplo

ibmcloud schematics policy get agent-policy-testing-cli-jan-10.deP.c737

Saída

Retrieving policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10  
Description         
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   aac37f57b20142dba1a435c70aeb12df   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod

Atualizando uma política de agente usando a CLI

É possível atualizar uma política do agente para alterar as tags de seleção ou descrição, fazendo referência ao agente com o argumento de entrada AGENT_ID.

ibmcloud schematics policy update --id agent-policy-testing-cli-jan-10.deP.c737 --kind agent_assignment_policy --resource-group Default --tags workspace-policy:prod --description testing-policy-cli --tags jobtag
Updating policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10   
Description      testing-policy-cli   
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   Default   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod	   
                  - jobtag

Após a atualização, recupere a política para confirmar as mudanças

Exemplo

ibmcloud schematics policy get --id agent-policy-testing-cli-jan-10.deP.c737

Saída

Retrieving policy...
                    
ID               agent-policy-testing-cli-jan-10.deP.c737   
Name             agent-policy-testing-cli-jan-10   
Description      testing-policy-cli   
Kind             agent_assignment_policy   
Location         eu-de   
Resource Group   Default   
Target              
Tags             [TAGS]   
                  - workspace-policy:prod	   
                  - jobtag	   
                    

Exclusão de uma política usando a CLI

É possível excluir uma política, transmitindo o argumento de entrada AGENT_ID

ibmcloud schematics policy delete --id agent-policy-testing-cli-jan-10.deP.c737
Do you really want to delete the policy? [y/N]> y
Initiating policy delete...

Criação de política do agente usando a API.

Siga as etapas para recuperar seu token de acesso do IAM e autenticar com o IBM Cloud Schematics usando a API. Para obter mais informações sobre a API de política do agente, consulte o status da tarefa de APIs de política do agente

Exemplo para criar uma política usando a API

POST /v2/settings/policies HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
    "name": "policy-1",
    "description": "Policy for job execution of secured workspaces on agent1",
    "resource_group": "Default",
    "tags": [
      "policy:secured-job"
    ],
    "location": "us-south",
    "kind": "agent_assignment_policy",
    "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent5.8442"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [
          {
            "kind": "workspace",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "test"
            ],
            "locations": [
              "us-south"
            ]
          }
        ]
      }
    }
  }

Exemplo para obter uma política usando a API

GET /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>

Exemplo para atualizar uma política usando a API

PATCH /v2/settings/policies/<your policy_id> HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
X-ENABLE-POLICIES: true
Authorization: Bearer <auth_token>
{
    "name": "policy-1",
    "description": "updated Policy for job execution of secured workspaces on agent1",
    "resource_group": "Default",
    "tags": [
      "policy:secured-job"
    ],
    "location": "us-south",
    "kind": "agent_assignment_policy",
    "target": {
      "selector_kind": "ids",
      "selector_ids": [
        "agent5.13a6"
      ]
    },
    "parameter": {
      "agent_assignment_policy_parameter": {
        "selector_kind": "scoped",
        "selector_scope": [
          {
            "kind": "action",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "dummy_resource_group"
            ],
            "locations": [
              "us-south"
            ]
          }
        ]
      }
    }
  }

Exemplo para localizar políticas usando a API

POST /v2/settings/policies/search HTTP/1.1
Host: schematics.cloud.ibm.com
Content-Type: application/json
Authorization: Bearer <auth_token>
{
   "parameter": {
            "kind": "workspace",
            "tags": [
              "env:dev",
              "k8s"
            ],
            "resource_groups": [
              "test"
            ],
            "locations": [
              "us-south"
            ]
          },
    "target": "action"
  }

Agora é possível usar o agente para executar tarefas do Schematics Terraform ou Ansible. O agente executa tarefas para áreas de trabalho ou ações que correspondem aos parâmetros de política de seleção definidos:

  • grupo de recursos
  • local
  • tags

Observe agora que as identificações devem ser configuradas na área de trabalho ou no tempo de criação da ação Quaisquer alterações nas tags realizadas por meio da interface do usuário do Schematics não são detectadas nem levadas em consideração durante a avaliação da política.

Após a execução, os logs da tarefa de área de trabalho ou ação contêm um cabeçalho indicando o agente no qual a tarefa foi executada.

2023/04/08 15:22:07 -----  New Workspace Action  -----
2023/04/08 15:22:07 Request: activitId=e3fcfdfdb13b07a1c60176e4b95c41ba, account=, owner=steve_strutt@uk.ibm.com, requestID=0a8a3428-b461-4dd0-8104-e859d68d35f6, OrchestratorID=orchestrator-5c8585dc74-6z9s5, agentID=agent-test-da.deA.e055, agentName=agent-test-da, jobRunnerID=jobrunner-5d99b5cfb7-p5xcz
2023/04/08 15:22:07 Related Workspace: name=myworkspace, agentID=agent-test-da.deA.e055 sourcerelease=(not specified), sourceurl=https://github.com/stevestrutt/multitier-vpc-bastion-host, branch=(not specified), folder=.
2023/04/08 15:22:07  --- Ready to execute the command on Agent agent-test-da.deA.e055 ---

Próximas etapas

É possível efetuar check-out do agente FAQ para quaisquer perguntas comuns relacionadas a um agente.

Quando o agente não for mais necessário, ele poderá ser removido seguindo as etapas em excluir um agente