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.
-
Wählen Sie im Arbeitsbereichsdashboardden Arbeitsbereich aus, den Sie auf Drift überprüfen möchten.
-
Wählen Sie Ihren Arbeitsbereich aus und öffnen Sie ihn.
-
Wählen Sie die Dropdown-Liste „Aktionen“ aus.
-
Wählen Sie die Option Abweichung erkennen aus, um den Abweichungsjob zu starten.
-
Während der Ausführung wird angezeigt, dass der Status
in progressnach Abschluss in einensuccess-oder Jobstatusfailurewechselt. -
Der Abweichungsstatus kann ermittelt werden, indem die Ausgabe der Jobanmeldung überprüft wird, wenn sich der Job im Status
successbefindet. 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 actionWenn 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.
-
Führen Sie
ibmcloud schematics planaus. -
Rufen Sie
ibmcloud schematics job logsab. -
Führen Sie
ibmcloud schematics applyaus. -
Führen Sie den Befehl
ibmcloud schematics job runaus, um einen Job im Arbeitsbereich Schematics zu erstellen.ibmcloud schematics job run --command-object workspace --command-object-id <workspace_id> --command-name drift -
Führen Sie
ibmcloud schematics workspace actionaus, um alle Aktivitäten Ihres Arbeitsbereichs abzurufen.ibmcloud schematics workspace action --id <workspace_id> -
Führen Sie
ibmcloud schematics job logsaus, 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.
-
Rufen Sie die Schritte für den IAM-Zugriff ab, um sich bei IBM Cloud Schematics zu authentifizieren.
-
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', } -
Führen Sie den ArbeitsplanSchematics aus.
-
Rufen Sie
ibmcloud schematics job logsab. -
Führen Sie
ibmcloud schematics applyaus. -
Führen Sie
ibmcloud schematics job runaus, um einen Job für Ihren Arbeitsbereich zu erstellen. -
Führen Sie
ibmcloud schematics workspace actionaus, um alle Aktivitäten Ihres Arbeitsbereichs abzurufen. -
Rufen Sie
ibmcloud schematics job logsab.