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 selecionadaslocations-á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
- Faça login no consoleIBM Cloud.
- Clique no ícone
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
workspaceouaction.. - Selecione Grupo de recursos.
- Selecione Localização do objeto
- Insira Tags de objeto
- Clique em Avançar.
- Selecione Tipo de objeto como
- Na seção Visualização de política
- Selecione as áreas de trabalho que precisam fazer parte de sua política
- Na seção Criar uma política:
- Clique em Criar.
Listando todas as políticas usando a IU
- Faça login no consoleIBM Cloud.
- Clique no ícone
Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
Exibindo uma política usando a IU
- Faça login no consoleIBM Cloud.
- Clique no ícone
Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
- Clique em sua política na lista para visualizar os detalhes da política
- 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.
- Faça login no consoleIBM Cloud.
- Clique no ícone
Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
- Clique em sua política na lista para visualizar os detalhes da política
- 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
- Faça login no consoleIBM Cloud.
- Clique no ícone
Menu > Automação da plataforma > Schematics > Extensões > guia Políticas.
- Clique em sua política na lista para visualizar os detalhes da política
- 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.12ou 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 [1m----- New Workspace Action -----[21m[0m
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