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

  1. Connectez-vous à la consoleIBM Cloud
  2. Cliquez sur l'icône 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 workspace ou action.
        • Sélectionnez Groupe de ressources.
        • Sélectionnez Emplacement de l'objet.
        • Entrez Balises d'objet.
        • Cliquez sur Suivant.
      • Dans la section Aperçu de la règle:
        • Sélectionnez les espaces de travail qui doivent faire partie de votre règle.
  3. Cliquez sur Créer.

Liste de toutes les règles à l'aide de l'interface utilisateur

  1. Connectez-vous à la consoleIBM Cloud
  2. Cliquez sur l'icône Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.

Affichage d'une règle à l'aide de l'interface utilisateur

  1. Connectez-vous à la consoleIBM Cloud
  2. Cliquez sur l'icône Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
  3. Cliquez sur votre règle dans la liste pour afficher les détails de la règle.
  4. 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.

  1. Connectez-vous à la consoleIBM Cloud
  2. Cliquez sur l'icône Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
  3. Cliquez sur votre règle dans la liste pour afficher les détails de la règle.
  4. Cliquez sur Actions > Editer la règle pour mettre à jour les paramètres.

Suppression d'une politique via l'interface utilisateur

  1. Connectez-vous à la consoleIBM Cloud
  2. Cliquez sur l'icône Menu > Automatisation de la plate-forme > Schematics > Extensions > onglet Politiques.
  3. Cliquez sur votre règle dans la liste pour afficher les détails de la règle.
  4. 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.12 ou 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 -----  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 ---

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.