Trabajar con pólizas de agente

Las políticas de agente (asignación) indican a Schematics qué agente utilizar para ejecutar trabajos de espacio de trabajo y acción en una zona de red específica. Cada agente tiene una o más políticas asociadas para identificar el espacio de trabajo y los trabajos de acción que se ejecutan en el agente. Por ejemplo, pueden existir agentes y los trabajos se pueden ejecutar en las siguientes zonas aisladas:

  • regiones de nube (region-1, region-2, region-3)
  • Zonas de VPC para la capa de aplicación, capa de datos, capa de gestión
  • proveedores de nube o en local
  • zonas departamentales de tu organización, como HR, Finance, Manufacturing

Sólo se puede asociar una única política con un espacio de trabajo o acción. La creación de políticas falla si hay una política existente que tiene como destino los mismos espacios de trabajo o acciones.

Puede crear, actualizar y suprimir un agent assignment policy utilizando la CLI Schematics mandatos de política.

El agent-assignment-policy para un agente se define utilizando los atributos siguientes de un espacio de trabajo o acción. Los atributos de selección pueden ser una combinación de los distintivos siguientes:

  • tags-se seleccionan espacios de trabajo o acciones con códigos de usuario coincidentes.
  • locations-se seleccionan espacios de trabajo o acciones en la ubicación Schematics coincidente.
  • resource-groups-se seleccionan los espacios de trabajo o acciones con el grupo de recursos coincidente.

Si la política de selección de agent-1 especifica tags=[dev] y resource-group=[rg-2], Schematics redirige automáticamente los trabajos del espacio de trabajo —incluidas las tareas de descarga de Git y las de plan, apply y destroy de Terraform— para todos los espacios de trabajo que cumplan los criterios de tags y resource-group, para que se ejecuten en agent-1.

Creación de una política de agente mediante la interfaz de usuario

  1. Inicie sesión en la consolaIBM Cloud.
  2. Haga clic en el icono de menú hamburguesa > Automatización de plataformas > Schematics > Extensiones > ficha Políticas > Crear política.
    • En la sección Crear una política:
      • Introduce el código único Nombre de la póliza.
      • Introduce la descripción.
      • Seleccione Tipo de política como política de asignación de agente.
      • Seleccione Ubicación y Grupo de recursos en la opción desplegable.
      • Especifique Etiquetas para el agente.
      • Pulse Siguiente.
    • En la sección Parámetros de política:
      • Selecciona tu agente en la lista desplegable.
      • En la sección Definir atributos de política.
        • Seleccione Tipo de objeto como workspace o action.
        • Seleccione Grupo de recursos.
        • Seleccione Ubicación de objeto.
        • Especifique Etiquetas de objeto.
        • Pulse Siguiente.
      • En la sección Vista previa de política:
        • Seleccione los espacios de trabajo que deben formar parte de la política.
  3. Pulse Crear.

Listado de todas las políticas utilizando la interfaz de usuario

  1. Inicie sesión en la consolaIBM Cloud.
  2. Haga clic en el icono de menú hamburguesa > Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.

Visualización de una política utilizando la interfaz de usuario

  1. Inicie sesión en la consolaIBM Cloud.
  2. Haga clic en el icono de menú hamburguesa > Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
  3. Pulse la política en la lista para ver los detalles de la política.
  4. En la ventana Agente asignado, pulse Detalles de agente para ver las configuraciones de agente.

Actualización de una política de agente utilizando la interfaz de usuario

Puede actualizar una política de agente para cambiar las etiquetas de selección, o descripción, haciendo referencia al agente con AGENT_ID.

  1. Inicie sesión en la consolaIBM Cloud.
  2. Haga clic en el icono de menú hamburguesa > Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
  3. Pulse la política en la lista para ver los detalles de la política.
  4. Pulse Acciones > Editar política para actualizar los parámetros.

Cómo eliminar una política mediante la interfaz de usuario

  1. Inicie sesión en la consolaIBM Cloud.
  2. Haga clic en el icono de menú hamburguesa > Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
  3. Pulse la política en la lista para ver los detalles de la política.
  4. Pulse Acciones > Suprimir política para suprimir los parámetros.

Creación de una política de agente mediante la CLI

Cree la política de agente utilizando la CLI. Para obtener la lista completa de opciones de política de agente, consulte el documento mandatos de política.

Antes de empezar:

  • Instale o actualice la versión del plugin Schematics para que sea 1.12.12 o superior.
  • Seleccione la región IBM Cloud donde está definido el agente. Establezca la región de CLI ejecutando el mandato ibmcloud target -r <region>.
  • Crear un archivo de política de agente

Definición de un archivo de políticas JSON

Aquí se proporciona un archivo de política JSON de ejemplo. Sustituya los marcadores de posición <...> por sus valores reales.

  • Los trabajos de agente en los que se van a ejecutar se definen utilizando el bloque target.
  • Los atributos para seleccionar el espacio de trabajo o las acciones que se van a ejecutar en el agente se definen mediante el bloque parameter.

Los archivos JSON de política se pueden editar en cualquier editor o IDE. Deben ser archivos JSON válidos.

Sintaxis del archivo 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>"
          ]
        }]
      }
    }
  }

Ejemplo

  {
      "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"
          ]
        }]
      }
    }
  }

Crear política de agente

Ejemplo

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

Salida

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 las políticas mediante la CLI

Puede visualizar la lista de políticas definidas en su cuenta utilizando el mandato policy list.

Ejemplo

ibmcloud schematics policy list

Salida

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

Visualización de una política utilizando la CLI

Puede ver la configuración de una política de agente con el mandato policy get.

Ejemplo

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

Salida

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

Actualización de una política de agente utilizando la CLI

Puede actualizar una política de agente para cambiar las etiquetas de selección, o descripción, haciendo referencia al agente con el 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

Después de actualizar, recupere la política para confirmar los cambios.

Ejemplo

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

Salida

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	   
                    

Eliminación de una política mediante la CLI

Puede suprimir una política, pasando el 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...

Creación de políticas de agente utilizando la API

Siga los pasos para recuperar la señal de acceso de IAM y autenticarse en IBM Cloud Schematics utilizando la API. Para obtener más información sobre la API de política de agente, consulte el estado del trabajo API de política de agente.

Ejemplo para crear una política utilizando la 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"
            ]
          }
        ]
      }
    }
  }

Ejemplo para obtener una política utilizando la 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>

Ejemplo para actualizar una política utilizando la 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"
            ]
          }
        ]
      }
    }
  }

Ejemplo para buscar políticas utilizando la 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"
  }

Ahora puede utilizar el agente para ejecutar trabajos Schematics Terraform o Ansible. El agente ejecuta cualquier trabajo para espacios de trabajo o acciones que coincidan con los parámetros de política de selección definidos:

  • grupo de recursos
  • ubicación
  • etiquetas

Tenga en cuenta ahora que las etiquetas se deben establecer en el espacio de trabajo o en la hora de creación de la acción. Los cambios en las etiquetas realizados a través de la interfaz de usuario de Schematics no se detectan ni se tienen en cuenta durante la evaluación de la política.

Después de la ejecución, el espacio de trabajo o los registros de trabajo de acción contienen una cabecera que indica el agente en el que se ha ejecutado el trabajo.

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óximos pasos

Puede consultar las Preguntas más frecuentes del agente para cualquier pregunta común relacionada con un agente.

Cuando el agente ya no es necesario, se puede eliminar siguiendo los pasos de suprimir un agente.