Einrichten einer CI-Toolchain mit Terraform

Mit diesem Tutorial können Sie die Toolchain-Vorlage für kontinuierliche Integration (CI) in DevSecOps für Infrastructure as Code ( IaC ) Terraform verwenden. Es ist vorkonfiguriert für die kontinuierliche Bereitstellung (CD) mit Bestandsintegration, Änderungsmanagement mit Git Repos and Issue Tracking, Beweissammlung und Bereitstellung der Infrastruktur auf IBM Cloud.

Vorbereitende Schritte

Führen Sie die folgenden Schritte aus, bevor Sie mit diesem Lernprogramm beginnen.

  1. Vervollständigen Sie die Einrichtung der Voraussetzungen. Weitere Informationen finden Sie im Abschnitt Bedeutung von CI für IaC.
  2. Sehen Sie sich das folgende Video an:

Setup der CI-Toolchain starten

Der Continuous Delivery-Dienst bietet Vorlagen, die Sie durch die Einrichtung der Toolchain führen und Prozesse in einer logischen Reihenfolge erstellen. Ein Fortschrittsanzeiger zeigt die Schritte zum Ausführen der Konfiguration an. Folgen Sie den Schritten, um auf die Vorlage für die CI-Toolchain zuzugreifen.

  1. Klicken Sie in der Cloud- IBM Cloud auf das Menüsymbol Menüsymbol > Plattformautomatisierung > Toolchains.
  2. Klicken Sie auf der Seite 'Toolchains' auf die Option Toolchain erstellen.
  3. Prüfen Sie Infrastruktur als Code.
  4. Klicken Sie auf die Kachel CI - Entwickeln Sie eine sichere Infrastruktur als Code mit DevSecOps Praktiken.

Einrichten der Einstellungen der CI-Toolchain

Die Seite Willkommen fasst den Zweck der Toolchain zusammen und enthält Verweise auf die Dokumentation und zugehörige Materialien.

  1. Klicken Sie auf Starten.

  2. Geben Sie einen Toolchain-Namen innerhalb Ihrer Toolchain für dieselbe Region und Ressourcengruppe im IBM Cloud ein.

  3. Wählen Sie eine Region aus der Dropdown-Liste.

  4. Wählen Sie eine Ressourcengruppe aus der Dropdown-Liste.

  5. Klicken Sie auf Weiter.

    Der nächste Schritt kann erst aufgerufen werden, wenn die Konfiguration für den aktuellen Schritt ordnungsgemäß abgeschlossen ist. Sie können jederzeit auf Zurück klicken, um die vorherigen Schritte im geführten Installationsprogramm anzuzeigen. Das Toolchain-Installationsprogramm behält alle Konfigurationseinstellungen aus den aufeinander folgenden Schritten bei.

    Einige Schritte beinhalten eine Schaltfläche für die erweiterte Konfiguration. Diese Schritte stellen standardmäßig die Mindestkonfiguration dar. Fortgeschrittene Benutzer, die eine feinere Steuerung benötigen, können jedoch auf die Schaltfläche Zur erweiterten Konfiguration wechseln klicken, um die Optionen für die zugrunde liegende Integration anzuzeigen.

Einrichten von CI-Tool-Integrationen

Überprüfen Sie die Standardeinstellungen und stellen Sie die benutzerdefinierten Konfigurationen bereit, wo immer dies zur Einrichtung der CI-Tool-Integration erforderlich ist. Konfigurieren Sie während des Setups mehrere Repositories. Sie können die Beispielrepositorys klonen oder Ihre eigenen Repositorys verwenden, aber die Toolchain unterstützt nur Git Repos and Issue Tracking-Repositorys.

Infrastrukturcode

Das Infrastruktur-Code-Repository ist das Projekt oder Modul, das die CI-Toolchain und Pipeline erstellt, testet und das Zielartefakt liefert. Das Infrastruktur-Code-Repository wird auf GitHub Enterprise gehostet. Aus Konsistenzgründen bezieht sich dieses Lernprogramm auf Git Repos and Issue Tracking.

Überprüfen Sie die Standardinformationen für den Infrastrukturcode:

  1. Akzeptieren Standardmuster verwenden. Wenn Sie ein bestehendes IaC Repository für die Toolchain verknüpfen möchten, wählen Sie Bring your own infrastructure code und geben Sie als Eingabe das Feld Repository URL an. Die Toolchain unterstützt derzeit nur die Verknüpfung mit bestehenden Git Repos and Issue Tracking Repositories. Weitere Informationen erhalten Sie unter DevSecOps, wenn Sie Ihren eigenen Infrastrukturcode einbringen möchten.
  2. Geben Sie einen Namen für Neuer Repository-Name ein.
  3. Klicken Sie auf Weiter.

Bestand

Das Inventar-Repository zeichnet die Details der Artefakte auf, die von den CI-Toolchains erstellt werden.

  1. Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
  2. Klicken Sie auf Weiter.

Probleme

Das Problemrepository zeichnet Probleme auf, die während der Ausführung der CI-Pipeline gefunden werden.

  1. Sie können die in der Vorlage enthaltene Standardkonfiguration übernehmen.
  2. Weiter klicken

Geheime Schlüssel

Geben Sie die geheimen Tresor-Integrationen an, die zu Ihrer Toolchain hinzugefügt werden sollen, indem Sie die Kippschalter verwenden, wie in Verwaltung von IBM Cloud Geheimnissen erläutert.

  1. Dieses Lernprogramm verwendet IBM Cloud® Secrets Manager als Vault für geheime Schlüssel. Die Felder Region, Ressourcengruppe und Servicename werden basierend auf den verfügbaren Auswahlmöglichkeiten automatisch ausgefüllt. Klicken Sie auf die Dropdown-Anzeiger, um die anderen Auswahlmöglichkeiten anzuzeigen.
  2. Geben Sie Ihren Secrets Manager Instanznamen ein.
  3. Wählen Sie die Berechtigungsart aus der Dropdown-Liste aus.
  4. Klicken Sie auf Weiter.

Nachweisspeicher

Der Evidence Locker speichert alle Evidenzen und Artefakte, die von der DevSecOps CI-Pipeline erzeugt werden.

  1. Schalten Sie den IBM Cloud Object Storage Bucket-Schieberegler um, um alle Beweise im IBM Cloud Object Storage Bucket zu speichern, der auf der nächsten Seite konfiguriert werden kann.
  2. Übernehmen Sie die Standardeinstellungen.
  3. Klicken Sie auf Weiter.

Cloud-Bucket Object Storage

Sie müssen über die Instanz IBM Cloud Object Storage und einen Bucket verfügen, um als Compliance Evidence Locker zu fungieren.

  1. Die Felder Cloud Object Storage instance, Bucket name und Cloud Object Storage endpoint werden automatisch ausgefüllt.
  2. Geben Sie Ihren Service ID API-Schlüssel ein.
    • Bevorzugt: Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem geheimen Tresor importiert werden.
    • Ein vorhandener Schlüssel kann kopiert und eingefügt werden.
  3. Klicken Sie auf Weiter.

Das Feld Endpunkt ist nicht obligatorisch. Sie können den Endpunkt während der Einrichtung der Toolchain oder während des Pipelinelaufs auswählen oder angeben.

Bereitstellung

Konfigurieren Sie den Zielarbeitsbereich Schematics, in dem die Terraform-Zustände gepflegt werden. Wenn der Name des Arbeitsbereichs nicht angegeben wird, erstellt toolchain einen standardmäßigen Schematics Arbeitsbereich mit dem ToolchainName-ToolchainId-PipelineID.

  1. Geben Sie Ihren IBM Cloud API-Schlüssel ein. Wenn der API-Schlüssel ausreichenden Zugang hat. Der Schematics Arbeitsbereich, Git Repositories und Ressourcengruppe Details werden automatisch ausgefüllt. Sie können jedes dieser Felder entsprechend Ihrer Konfiguration ändern.

    • Bevorzugt: Ein vorhandener Schlüssel kann durch Anklicken des Schlüsselsymbols aus einem geheimen Tresor importiert werden.
    • Ein vorhandener Schlüssel kann kopiert und eingefügt werden.
    • Von hier aus kann ein neuer Schlüssel erstellt werden, indem Sie auf das Symbol Neu + klicken.

    Der neu generierte API-Schlüssel kann sofort in einem Geheimnistresor gespeichert werden.

  2. Geben Sie den Schematic Workspace Name ein.

  3. Klicken Sie auf Weiter.

Signieren

Die von der Toolchain erstellten und im Inventar erfassten Artefakte müssen signiert werden, bevor sie in der Produktion eingesetzt werden.

  1. Geben Sie den GnuPG Private Key ein. Alternativ können Sie auch einen neuen GPG-Schlüssel erstellen, indem Sie auf NEU klicken. Weitere Informationen finden Sie unter Generieren eines GPG-Schlüssels.
  2. Klicken Sie auf Weiter.

Optionale Tools

Slack

Konfigurieren Sie den Slack, um Benachrichtigungen über Ihre Pull-Anfragen oder CI-Pipeline-Ereignisse zu erhalten. Sie können das Slack-Tool auch nach der Erstellung der Toolchain hinzufügen.

  1. Geben Sie Ihren Slack-Webhook ein. Weitere Informationen finden Sie unter Slack webhook.
  2. Geben Sie Ihren Slack-Kanal ein, um eine Nachricht zu veröffentlichen.
  3. Geben Sie den Namen des Slack-Teams ein. Wenn Ihr Team URL zum Beispiel https://team.slack.com heißt, lautet der Teamname team.
  4. Wählen Sie Automatisierte Slack-Benachrichtigungen für die Ereignisse, über die Sie benachrichtigt werden möchten.
  5. Klicken Sie auf Weiter.

Optional können Sie das Senden von Benachrichtigungen mit der slack-notifications-Umgebungseigenschaft in Ihrer CD-Pipeline durch Verwendung von 0 = off, and 1 = on umschalten.

CI-Toolchain erstellen

  1. Klicken Sie auf der Seite 'Zusammenfassung' auf Toolchain erstellen.

  2. Warten Sie auf die Erstellung der Toolchain.

    Andere Toolchain-Integrationen können nach der Erstellung der Pipeline konfiguriert werden.

CI-Toolchain erkunden

Die CI-Toolchain enthält pr-pipeline und ci-pipeline. Diese Pipelines werden ausgelöst, wenn eine neue Zusammenführungsanforderung eingereicht oder in den Hauptzweig des Infrastruktur-Code-Repositorys zusammengeführt wird.

Folgen Sie den Schritten, um auf Ihre Toolchain zuzugreifen:

  1. Klicken Sie in der Cloud- IBM Cloud auf das Menüsymbol Menüsymbol > Plattformautomatisierung > Toolchains.

  2. Klicken Sie auf der Seite 'Toolchains' auf die Option Toolchain erstellen.

  3. Klicken Sie auf Ihre Toolchain, um die Ausgabe wie im Screenshot zu sehen.

    Das Beispiel, das in diesem Tutorial verwendet wird, erwartet eine resource_group, um die Key Protect Instanz zu erstellen. Der Standardname für resource_group lautet Default. Wenn der Standardwert für Ihr Konto nicht geeignet ist, ersetzen Sie die Standardvariable resource_group in der Datei variables.tf. Andernfalls geben Sie die Variable resource_group an, indem Sie die Umgebungseigenschaft TF_VAR_resource_group in der PR-Pipeline und der CI-Pipeline auf den entsprechenden Ressourcengruppennamen setzen.

    DevSecOps IaC CI-Toolchain
    DevSecOps CI-Toolchain

PR-Pipeline ausführen

Um die pr-pipeline zu starten, erstellen Sie eine Zusammenführungsanforderung in Ihrem Anwendungs-Repository:

  1. Klicken Sie auf der Seite der CI-Toolchain auf die Kachel für das Anwendungs-Repository. Standardmäßig wird sie mit dem Namen compliance-app-<timestamp> erstellt.

  2. Erstellen Sie einen Zweig aus dem Hauptzweig.

  3. Aktualisieren Sie einige Codes in der Anwendung oder fügen Sie eine Readme-Datei hinzu und speichern Sie die Änderungen.

  4. Antrag auf Zusammenführung einreichen.

  5. Klicken Sie auf der Seite CI-Toolchain auf die Kachel pr-pipeline. Überprüfen Sie, ob die PR-Pipeline durch die Erstellung des Zusammenführungsantrags ausgelöst wird.

  6. Warten Sie den Abschluss des pr-pipeline Laufs ab. Der entsprechende Zusammenführungsantrag in Ihrem Anwendungs-Repository befindet sich im Zustand Pending, bis alle Phasen der PR-Pipeline erfolgreich abgeschlossen sind.

  7. Nachdem der PR-Pipeline-Lauf erfolgreich war, klicken Sie auf die Pipeline, um die zahlreichen abgeschlossenen Schritte zu prüfen und die Seite wie im Screenshot zu sehen.

    DevSecOps IaC PR-Pipeline erfolgreich
    DevSecOps PR-Pipeline erfolgreich

  8. Navigieren Sie zurück zum Antrag auf Zusammenführung.

  9. Führen Sie die Anfrage zusammen, damit Ihre Änderungen in den Hauptzweig Ihres Anwendungs-Repositorys kopiert werden. Sorgen Sie dafür, dass Ihre CI-Pipeline automatisch ausgelöst wird.

CI-Pipeline ausführen

Starten Sie die CI-Pipeline auf eine der folgenden Arten:

  • Automatisch: nach einer erfolgreichen PR-Pipeline, indem der PR genehmigt und mit dem Hauptzweig zusammengeführt wird.
  • Manuell: Um die CI-Pipeline manuell auszulösen, wählen Sie die Karte Delivery Pipeline, klicken Sie auf Pipeline ausführen und wählen Sie Manueller Auslöser.

In diesem Tutorial wurde die CI-Pipeline ausgelöst, nachdem Sie Ihre Codeänderungen mit dem Master-Zweig Ihres Anwendungs-Repositorys zusammengeführt hatten.

  1. Klicken Sie auf der Seite CI-Toolchain auf die Kachel ci-pipeline.

  2. Klicken Sie auf Ausführen neben dem Namen Ihrer Pipeline. Beobachten Sie, dass ein Pipelinelauf läuft. Warten Sie, bis der Pipelinelauf abgeschlossen ist.

  3. Nachdem die CI-Pipeline erfolgreich ausgeführt wurde, klicken Sie auf die Pipeline, um die abgeschlossenen Schritte zu erkunden und die Seite wie im Screenshot zu sehen.

    DevSecOps IaC CI-Pipeline erfolgreich
    DevSecOps CI-Pipeline

Belege aus allen Konformitätsprüfungen in der CI-Pipeline werden in das Evidence Locker Repository, aber auch in den IBM Cloud Object Storage Bucket hochgeladen.

Um festzustellen, ob in Ihrem Pipelinelauf Fehler aufgetreten sind, überprüfen Sie den letzten Schritt Ihrer Pipeline.

Pipeline anpassen

Weitere Informationen zur Anpassung der Pipeline finden Sie unter Wie kann ein Benutzer die Pipeline anpassen?

Nächste Schritte

Sie haben erfolgreich eine DevSecOps CI-Toolchain für Terraform erstellt, den Code im Infrastruktur-Code-Repository bearbeitet und ci-pipeline ausgeführt, um Ihre Änderungen zu erstellen, zu testen und in der Entwicklungsumgebung bereitzustellen.

Gehen Sie nun zu Einrichten einer CD-Toolchain für Terraform.