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
- Inicie sesión en la consolaIBM Cloud.
- Haga clic en el icono de menú
> 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
workspaceoaction. - Seleccione Grupo de recursos.
- Seleccione Ubicación de objeto.
- Especifique Etiquetas de objeto.
- Pulse Siguiente.
- Seleccione Tipo de objeto como
- En la sección Vista previa de política:
- Seleccione los espacios de trabajo que deben formar parte de la política.
- En la sección Crear una política:
- Pulse Crear.
Listado de todas las políticas utilizando la interfaz de usuario
- Inicie sesión en la consolaIBM Cloud.
- Haga clic en el icono de menú
> Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
Visualización de una política utilizando la interfaz de usuario
- Inicie sesión en la consolaIBM Cloud.
- Haga clic en el icono de menú
> Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
- Pulse la política en la lista para ver los detalles de la política.
- 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.
- Inicie sesión en la consolaIBM Cloud.
- Haga clic en el icono de menú
> Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
- Pulse la política en la lista para ver los detalles de la política.
- Pulse Acciones > Editar política para actualizar los parámetros.
Cómo eliminar una política mediante la interfaz de usuario
- Inicie sesión en la consolaIBM Cloud.
- Haga clic en el icono de menú
> Automatización de plataformas > Schematics > Extensiones > pestaña Políticas.
- Pulse la política en la lista para ver los detalles de la política.
- 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.12o 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 [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ó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.