Abweichungen in Arbeitsbereichen erkennen

IBM Cloud® Schematics ermöglicht Benutzern die Bereitstellung, Verwaltung und Bearbeitung von Infrastrukturressourcen mit Terraform-basierten Arbeitsbereichen unter Verwendung von Konzepten von declarative Infrastructure as Code (IaC). Wenn jedoch eine Terraform-Konfiguration bereitgestellt wird und Ressourcen erstellt werden, bedeutet dies nicht, dass die Ressourcen wie von der Konfiguration deklariert bleiben. Jede Änderung des Infrastrukturstatus wird als drift bezeichnet. Dies tritt auf, wenn sich Ihre implementierte Infrastruktur vom gewünschten (deklarativen) Status unterscheidet, der in Ihrer Vorlagenkonfiguration definiert ist.

Ein Drift kann aus vielen Gründen auftreten. Die häufigste Ursache sind Änderungen, die außerhalb der Terraform-Automatisierung manuell an Ihrer Infrastruktur vorgenommen wurden. Die Terraform-Statusdatei Ihres bereitgestellten Arbeitsbereichs wird dann nicht mehr mit Ihren bereitgestellten Infrastrukturressourcen synchronisiert und der Arbeitsbereich weist eine Abweichung auf.

Drift (Abweichungen) kann aus einer Vielzahl von Gründen innerhalb des Kontexts Ihrer Konfiguration auftreten:

  • Hinzufügen oder Entfernen von Ressourcen aus der Vorlagenkonfiguration, ohne die Änderungen anzuwenden.
  • Vorlagenressourcendefinitionen ändern.
  • Unabhängig von Ihrer Vorlagenkonfiguration kommt es zu Abweichungen, wenn Änderungen manuell vorgenommen werden. Beispiel: Über eine Befehlszeilenoperation für eine Cloudressource oder über die Cloudkonsole.
  • Durch andere Automatisierungstools.

Beispielszenario für Drift

Eine VSI-Instanz wird mithilfe von „ IBM Cloud Schematics “ und einer Konfigurationsvorlage bereitgestellt. Ein Nutzer der „ DevOps “-Cloud kann die Konfiguration der bereitgestellten VSI ändern, indem er sich bei der Cloud-Konsole anmeldet und das Startvolume einer Instanz anpasst oder eine Ethernet-Schnittstelle hinzufügt. Diese Änderungen führen zu Ihrer Infrastrukturbereitstellung in drift.

IBM Cloud Schematics ermöglicht die vorhersehbare Verwaltung des Ressourcenlebenszyklus Ihrer Infrastruktur mithilfe von Terraform. Eine Abweichung tritt auf, wenn der tatsächliche Zustand Ihrer Infrastruktur von dem Zustand abweicht, der in Ihrer Terraform-Template-Konfiguration definiert ist.

Terraform kann keine Abweichung in Ressourcen und Attributen erkennen, die nicht mithilfe von Terraform verwaltet oder konfiguriert wurden. Beispielsweise kann Terraform keine Änderungen in einer virtuellen Maschine erkennen, die sich aus der lokalen Installation von Anwendungen oder der Verwendung von Konfigurationsmanagementtools wie Chef oder Ansible ergeben.

Drifterkennung in IBM Cloud

Die Erkennung von Drift für Ihre Terraform-Automatisierungsarbeitsbereiche ist in IBM Cloud Schematics möglich. Sie können die Drifterkennung mithilfe der folgenden drei Methoden prüfen.

Drifterkennung über die Benutzerschnittstelle

Sie können die Drift-Erkennung für Arbeitsbereiche über die Seite „ Schematics “ des Arbeitsbereichs-Jobs starten. Es wird ein Job gestartet, um Abweichungen für den Arbeitsbereich und die darin bereitgestellten Ressourcen zu erkennen. Während der Ausführung ist der Abweichungserkennungsjob in progress, bei Abschluss hat er einen failure oder success. Um die Details des Drift-Jobs einzusehen, müssen Sie im Drift-Job-Protokoll den Drift-Status überprüfen.

Anzeigen von Abweichungsprotokollen über die Benutzerschnittstelle

Verwenden Sie die folgenden Schritte, um das Abweichungsjobprotokoll anzuzeigen.

  1. Wählen Sie im Arbeitsbereichsdashboardden Arbeitsbereich aus, den Sie auf Drift überprüfen möchten.

  2. Wählen Sie Ihren Arbeitsbereich aus und öffnen Sie ihn.

  3. Wählen Sie die Dropdown-Liste „Aktionen“ aus.

  4. Wählen Sie die Option Abweichung erkennen aus, um den Abweichungsjob zu starten.

  5. Während der Ausführung wird angezeigt, dass der Status in progress nach Abschluss in einen success-oder Jobstatus failure wechselt.

  6. Der Abweichungsstatus kann ermittelt werden, indem die Ausgabe der Jobanmeldung überprüft wird, wenn sich der Job im Status success befindet. Ein Beispiel für eine erfolgreiche Jobausführung mit erkannter Abweichung wird im Screenshot angezeigt.

    Überprüfen Sie das Protokoll des Erfolgsjobs, um die Driftdetails zu ermitteln.

    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
    

    Wenn der Job fehlschlägt, überprüfen Sie die Ursache des Fehlers im Protokoll und beheben Sie die Fehlerbedingung, indem Sie den Job wiederholen.

    Ein Fehlerbeispieljobprotokoll gibt die Ursache für den Fehler des Abweichungsjobs an.

    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.
    

Drifterkennung über die Befehlszeilenschnittstelle

Sie können die Drift-Erkennung über den Befehl „create workspaces“ starten. Die Drift-Erkennung löst einen Auftrag aus, um Abweichungen für den Arbeitsbereich und dessen spezifische Ressourcen zu erkennen. Der Drifterkennungsjob hat den Status in progress oder completed mit dem entsprechenden Ergebnis wie failure oder success. Um die Einzelheiten des Drift-Jobs zu erfahren, müssen Sie stattdessen das Drift-Job-Protokoll auf den Drift-Status überprüfen. Verwenden Sie die folgenden Befehle, um die erkannte Drift anzuzeigen.

Abweichungsprotokolle über die Befehlszeilenschnittstelle erstellen und anzeigen

Mit den folgenden Schritten können Sie die Drift in Schematics-Arbeitsbereichen mithilfe der CLI ermitteln.

  1. Erstellen Sie die Arbeitsbereiche von Schematics.

  2. Rufen Sie Ihre Arbeitsbereichs-ID ab.

  3. Führen Sie ibmcloud schematics plan aus.

  4. Rufen Sie ibmcloud schematics job logs ab.

  5. Führen Sie ibmcloud schematics apply aus.

  6. Führen Sie den Befehl ibmcloud schematics job run aus, um einen Job im Arbeitsbereich Schematics zu erstellen.

    ibmcloud schematics job run --command-object workspace --command-object-id <workspace_id> --command-name drift
    
  7. Führen Sie ibmcloud schematics workspace action aus, um alle Aktivitäten Ihres Arbeitsbereichs abzurufen.

    ibmcloud schematics workspace action --id <workspace_id>
    
  8. Führen Sie ibmcloud schematics job logs aus, um die detaillierten Protokolle eines Jobs abzurufen und die Driftdetails anzuzeigen.

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

Drifterkennung über die Anwendungsprogrammierschnittstelle (API) erstellen und anzeigen

Überprüfen Sie die CURL-Befehle zum Erstellen und Anzeigen der Drift über die API.

  1. Rufen Sie die Schritte für den IAM-Zugriff ab, um sich bei IBM Cloud Schematics zu authentifizieren.

  2. Erstellen Sie den Arbeitsbereich. Als Teil der Nutzdaten müssen Sie die folgende Driftkonfiguration hinzufügen:

    {
        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. Rufen Sie die Arbeitsbereichsdetails ab.

  4. Führen Sie den ArbeitsplanSchematics aus.

  5. Rufen Sie ibmcloud schematics job logs ab.

  6. Führen Sie ibmcloud schematics apply aus.

  7. Führen Sie ibmcloud schematics job run aus, um einen Job für Ihren Arbeitsbereich zu erstellen.

  8. Führen Sie ibmcloud schematics workspace action aus, um alle Aktivitäten Ihres Arbeitsbereichs abzurufen.

  9. Rufen Sie ibmcloud schematics job logs ab.