Travailler avec les politiques des agents
Les règles d'agent (affectation) indiquent à Schematics l'agent à utiliser pour exécuter des travaux d'espace de travail et d'action dans une zone réseau spécifique. Chaque agent est associé à une ou plusieurs règles permettant d'identifier l'espace de travail et les travaux d'action exécutés sur l'agent. Par exemple, des agents peuvent exister et des travaux peuvent être exécutés dans les zones isolées suivantes:
- régions de cloud (region-1, region-2, region-3)
- Zones VPC pour la couche d'application, la couche de données, la couche de gestion
- fournisseurs de cloud ou sur site
- les zones départementales de votre organisation, telles que
HR,Finance,Manufacturing
Une seule règle peut être associée à un espace de travail ou à une action. La création de la règle échoue si une règle existante cible les mêmes espaces de travail ou actions.
Vous pouvez créer, mettre à jour et supprimer un agent assignment policy à l'aide de l'interface de ligne de commande Schematics commandes de règle.
Le agent-assignment-policy d'un agent est défini à l'aide des attributs suivants d'un espace de travail ou d'une action. Les attributs de sélection peuvent être une combinaison des indicateurs suivants:
tags-Des espaces de travail ou des actions avec des balises d'utilisateur correspondantes sont sélectionnés.locations-les espaces de travail ou les actions dans l'emplacement Schematics correspondant sont sélectionnés.resource-groups-les espaces de travail ou les actions avec le groupe de ressources correspondant sont sélectionnés.
Si la politique de sélection pour agent-1 spécifie tags=[dev] et resource-group=[rg-2], Schematics achemine automatiquement les tâches de l'espace de travail, notamment les tâches de téléchargement d' Git,
ainsi que les tâches Terraform « plan », « apply » et « destroy » pour tous les espaces de travail répondant aux critères tags et resource-group, afin qu'elles soient exécutées sur agent-1.
Création d'une politique d'agent à l'aide de l'interface utilisateur
- Connectez-vous à la consoleIBM Cloud
- Cliquez sur l'
Menu > Automatisation de la plate-forme > Schematics > Extensions > Onglet Politiques > Créer une politique.
- Dans la section Créer une règle:
- Saisissez une adresse e- Nom de la police unique.
- Saisissez une description.
- Sélectionnez Type de règle comme règle d'affectation d'agent.
- Sélectionnez Emplacement et Groupe de ressources dans la liste déroulante.
- Entrez des balises pour l'agent.
- Cliquez sur Suivant.
- Dans la section Paramètres de règle:
- Sélectionnez votre agent dans la liste déroulante.
- Dans la section Définir des attributs de règle.
- Sélectionnez Type d'objet comme
workspaceouaction. - Sélectionnez Groupe de ressources.
- Sélectionnez Emplacement de l'objet.
- Entrez Balises d'objet.
- Cliquez sur Suivant.
- Sélectionnez Type d'objet comme
- Dans la section Aperçu de la règle:
- Sélectionnez les espaces de travail qui doivent faire partie de votre règle.
- Dans la section Créer une règle:
- Cliquez sur Créer.
Liste de toutes les règles à l'aide de l'interface utilisateur
- Connectez-vous à la consoleIBM Cloud
- Cliquez sur l'
Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
Affichage d'une règle à l'aide de l'interface utilisateur
- Connectez-vous à la consoleIBM Cloud
- Cliquez sur l'
Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
- Cliquez sur votre règle dans la liste pour afficher les détails de la règle.
- Dans la fenêtre Agent affecté, cliquez sur Détails de l'agent pour afficher les configurations de votre agent.
Mise à jour d'une règle d'agent à l'aide de l'interface utilisateur
Vous pouvez mettre à jour une règle d'agent pour modifier les balises de sélection, ou la description, en référençant l'agent avec AGENT_ID.
- Connectez-vous à la consoleIBM Cloud
- Cliquez sur l'
Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
- Cliquez sur votre règle dans la liste pour afficher les détails de la règle.
- Cliquez sur Actions > Editer la règle pour mettre à jour les paramètres.
Suppression d'une politique via l'interface utilisateur
- Connectez-vous à la consoleIBM Cloud
- Cliquez sur l'
Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
- Cliquez sur votre règle dans la liste pour afficher les détails de la règle.
- Cliquez sur Actions > Supprimer la règle pour supprimer les paramètres.
Création d'une stratégie d'agent à l'aide de l'interface de ligne de commande (CLI)
Créez votre règle d'agent à l'aide de l'interface de ligne de commande. Pour obtenir la liste complète des options de règle d'agent, voir la documentation relative aux commandes de règle.
Avant de commencer :
- Installez ou mettez à jour la version Plug-in Schematics pour qu'elle soit
1.12.12ou supérieure. - Sélectionnez la région IBM Cloud dans laquelle l'agent est défini. Définissez la région CLI en exécutant la commande
ibmcloud target -r <region>. - Création d'un fichier de règles d'agent
Définition d'un fichier de stratégie JSON
Un exemple de fichier de règles JSON est fourni ici. Remplacez les marques de réservation <...> par vos valeurs réelles.
- Les travaux d'agent à exécuter sont définis à l'aide du bloc
target. - Les attributs permettant de sélectionner l'espace de travail ou les actions à exécuter sur l'agent sont définis par le bloc
parameter.
Les fichiers JSON de règles peuvent être édités dans n'importe quel éditeur ou IDE. Ils doivent être au format JSON valide.
Syntaxe de fichier JSON de règle:
{
"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>"
]
}]
}
}
}
Exemple
{
"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"
]
}]
}
}
}
Créer une règle d'agent
Exemple
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
Sortie
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
Afficher la liste de toutes les politiques à l'aide de l'interface de ligne de commande (CLI)
Vous pouvez afficher la liste des règles définies dans votre compte à l'aide de la commande policy list.
Exemple
ibmcloud schematics policy list
Sortie
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
Affichage d'une règle à l'aide de l'interface CLI
Vous pouvez afficher la configuration d'une règle d'agent à l'aide de la commande policy get.
Exemple
ibmcloud schematics policy get agent-policy-testing-cli-jan-10.deP.c737
Sortie
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
Mise à jour d'une règle d'agent à l'aide de l'interface CLI
Vous pouvez mettre à jour une règle d'agent pour modifier les balises de sélection ou la description en référençant l'agent avec l'argument d'entrée 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
Après la mise à jour, extrayez la règle pour confirmer les modifications.
Exemple
ibmcloud schematics policy get --id agent-policy-testing-cli-jan-10.deP.c737
Sortie
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
Suppression d'une stratégie à l'aide de l'interface de ligne de commande (CLI)
Vous pouvez supprimer une règle en transmettant l'argument d'entrée 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...
Création de règles d'agent à l'aide de l'API
Suivez les étapes permettant d'extraire votre jeton d'accès IAM et de vous authentifier auprès d'IBM Cloud Schematics à l'aide de l'API. Pour plus d'informations sur l'API de stratégie d'agent, voir le statut du travail API de stratégie d'agent.
Exemple de création d'une stratégie à l'aide de l'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"
]
}
]
}
}
}
Exemple d'obtention d'une stratégie à l'aide de l'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>
Exemple de mise à jour d'une stratégie à l'aide de l'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"
]
}
]
}
}
}
Exemple de recherche de stratégies à l'aide de l'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"
}
Vous pouvez maintenant utiliser l'agent pour exécuter des travaux Schematics Terraform ou Ansible. L'agent exécute tous les travaux pour les espaces de travail ou les actions qui correspondent aux paramètres de règle de sélection définis:
- groupe de ressources
- emplacement
- étiquettes
Notez maintenant que les balises doivent être définies au moment de la création de l'espace de travail ou de l'action. Les modifications apportées aux balises via l'interface utilisateur d' Schematics ne sont ni détectées ni prises en compte lors de l'évaluation des politiques.
Après l'exécution, les journaux de l'espace de travail ou du travail d'action contiennent un en-tête indiquant l'agent sur lequel le travail a été exécuté.
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 ---
Etapes suivantes
Vous pouvez consulter la foire aux questions de l'agent pour connaître les questions courantes relatives à un agent.
Lorsque l'agent n'est plus requis, il peut être supprimé en suivant les étapes de la rubrique Suppression d'un agent.