Détection de la dérive dans les espaces de travail

IBM Cloud® Schematics permet aux utilisateurs de déployer, de gérer et de manipuler des ressources d'infrastructure à l'aide d'espaces de travail basés sur Terraform en utilisant les concepts declarative Infrastructure as Code (IaC). Toutefois, lorsqu'une configuration Terraform est déployée et que des ressources sont créées, cela ne signifie pas que les ressources restent telles qu'elles sont déclarées par la configuration. Toute modification de l'état de l'infrastructure est appelée drift. Elle se produit lorsque votre infrastructure déployée diffère de l'état souhaité (déclaratif) défini par votre configuration de modèle.

La dérive peut se produire pour de nombreuses raisons. La cause la plus fréquente est les modifications apportées manuellement à votre infrastructure en dehors de l'automatisation Terraform. Le fichier d'état Terraform de votre espace de travail déployé n'est alors plus synchronisé avec vos ressources d'infrastructure déployées et l'espace de travail est dit en dérive.

La dérive peut se produire pour de nombreuses raisons dans le contexte de votre configuration :

  • Ajout ou suppression de ressources de la configuration de modèle sans appliquer les modifications.
  • Modification des définitions de ressource de modèle.
  • En dehors de la configuration de votre modèle, un décalage survient lorsque des modifications sont apportées manuellement. Par exemple, à partir d'une opération de ligne de commande sur une ressource de cloud ou via la console de cloud.
  • Peut se produire via d'autres outils d'automatisation.

Exemple de scénario de dérive

Une instance VSI est provisionnée à l'aide d' IBM Cloud Schematics et d'un modèle de configuration. Un utilisateur du cloud « DevOps » peut modifier la configuration d'une instance VSI provisionnée en se connectant à la console Cloud et en modifiant le volume de démarrage d'une instance ou en ajoutant une interface Ethernet. Ces modifications entraînent le déploiement de votre infrastructure dans drift.

IBM Cloud Schematics permet, de manière prévisible, de gérer le cycle de vie des ressources de votre infrastructure à l'aide de Terraform. Une dérive se produit lorsque l'état réel de votre infrastructure diffère de l'état défini dans la configuration de votre modèle Terraform.

Terraform ne peut pas détecter la dérive dans les ressources et les attributs qui ne sont pas gérés ou configurés à l'aide de Terraform. Par exemple, Terraform ne peut pas détecter les modifications dans une machine virtuelle résultant de l'installation d'applications en local ou à l'aide d'outils de gestion des configurations tels que Chef ou Ansible.

Détection de dérive dans IBM Cloud

La détection de dérive de vos espaces de travail d'automatisation Terraform est possible dans IBM Cloud Schematics. Vous pouvez utiliser trois méthodes pour vérifier la détection de la dérive.

Détection de dérive à l'aide de l'interface utilisateur

Vous pouvez lancer la détection des écarts pour les espaces de travail depuis la page des tâches de l'espace de travail « Schematics ». Il lance une tâche visant à détecter les dérives au niveau de l'espace de travail et de ses ressources déployées. Lors de l'exécution, le travail de détection de dérive est in progress. Une fois terminé, il comporte un failure ou un success. Pour consulter les détails de la tâche de drift, vous devez vérifier le journal de cette tâche afin de connaître son statut.

Affichage des journaux de dérive de détection à l'aide de l'interface utilisateur

Procédez comme suit pour afficher le journal des travaux de dérive.

  1. Dans le tableau de bord de l'espace de travail, sélectionnez l'espace de travail dont vous souhaitez vérifier la dérive.

  2. Sélectionnez et ouvrez votre espace de travail.

  3. Sélectionnez la liste déroulante Actions.

  4. Sélectionnez l'option Détection de la dérive pour initier le travail de détection de la dérive.

  5. Lors de l'exécution, le statut indique que in progress passe à un statut success ou à un statut de travail failure à la fin de l'exécution.

  6. Le statut de dérive peut être déterminé en examinant la sortie de la connexion de travail lorsque le travail est à l'état success. Un exemple d'exécution de travail réussie avec une dérive détectée est affiché dans la capture d'écran.

    Consultez le journal des travaux qui ont abouti pour identifier les détails de la dérive.

    2022/04/19 10:10:44 -----  Terraform DRIFT  -----
    2022/04/19 10:10:44 Starting command: terraform-drift-cli drift
    2022/04/19 10:10:44 Terraform Drift | configuration drift identfied
    2022/04/19 10:10:44 Terraform Drift | resource         operation   attribute   drift value
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        schematics:us-east.workspace.myworkspace-drift-demo.bfdd0e2d
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        tag:new1
    2022/04/19 10:10:44 Terraform Drift | ibm_is_vpc.vpc   +           tags        tag:new2
    2022/04/19 10:10:44 Terraform Drift |
    2022/04/19 10:10:44 Command finished successfully.
    2022/04/19 10:10:52 Done with the workspace action
    

    Si le travail échoue, examinez la cause de l'échec dans le journal et corrigez le cas d'erreur en réexécutant le travail.

    Un exemple d'historique de travail d'échec identifie la cause de l'échec du travail de dérive.

    2022/04/13 13:05:46 -----  Terraform Commands  -----
    2022/04/13 13:05:46 Could not execute job: Error : Drift cannot be executed since state file doesn't exist. Please run terraform apply to generate state file.
    

Détection de dérive à l'aide de l'interface CLI

Vous pouvez lancer la détection des dérives à partir de la commande « create workspaces ». La détection des écarts lance une tâche visant à détecter les écarts au niveau de l'espace de travail et de ses ressources spécifiques. Le travail de détection de dérive est in progress ou completed avec le statut approprié, tel que failure ou success. Pour connaître les détails de la tâche de drift, vous devez plutôt consulter le journal de cette tâche afin de vérifier son état. Utilisez les commandes suivantes pour afficher la détection de la dérive.

Création et affichage des journaux de dérive de détection à l'aide de l'interface de ligne de commande

Vous pouvez suivre ces étapes pour détecter la dérive dans les espaces de travail d' Schematics s à l'aide de l'interface de ligne de commande (CLI).

  1. Créez les espaces de travail Schematics.

  2. Obtention de votre ID espace de travail.

  3. Exécutez ibmcloud schematics plan.

  4. Extrayez ibmcloud schematics job logs.

  5. Exécutez ibmcloud schematics apply.

  6. Exécutez ibmcloud schematics job run pour créer un travail dans l'espace de travail Schematics.

    ibmcloud schematics job run --command-object workspace --command-object-id <workspace_id> --command-name drift
    
  7. Exécutez ibmcloud schematics workspace action pour extraire toutes les activités de votre espace de travail.

    ibmcloud schematics workspace action --id <workspace_id>
    
  8. Exécutez ibmcloud schematics job logs pour extraire les journaux détaillés d'un travail afin d'afficher les détails de la dérive.

    ibmcloud schematics logs --id <workspace_id> --act-id <Job_id>
    

Création et affichage de la détection de la dérive via l'API

Consultez les commandes CURL pour créer et afficher la dérive via l'API.

  1. Extrayez votre accès IAM étapes pour vous authentifier auprès de IBM Cloud Schematics.

  2. Créez l'espace de travail. Dans le contenu, vous devez ajouter la configuration de dérive suivante.

    {
        commands: [
            {
            command: 'drift',
            command_name: 'drift command',
            command_desc: 'command to detect drift in workspace resources',
            },
        ],
        operation_name: 'drift',
        description: 'command to detect drift in workspace resources',
        }
    
  3. Obtenez les détails de l'espace de travail.

  4. Exécutez la gamme d'opérationsSchematics.

  5. Extrayez ibmcloud schematics job logs.

  6. Exécutez ibmcloud schematics apply.

  7. Exécutez ibmcloud schematics job run pour créer un travail pour votre espace de travail.

  8. Exécutez ibmcloud schematics workspace action pour extraire toutes les activités de votre espace de travail.

  9. Extrayez ibmcloud schematics job logs.