
Die ganze Kraft von GitLab CI bei der Demonstration von Ansible-Playbooks mit der Infrastruktur als Code-Ansatz.
GitLab CI ist ein effektives Tool für eine Vielzahl von Szenarien, einschließlich der Infrastruktur als Code. GitLab kann mit verschiedenen Tools verwendet werden, aber in dieser Demo werden wir Ansible verwenden, da es genau das ist, was Entwickler am häufigsten verwenden, wenn sie sich "Infrastruktur als Code" nähern. Hier ist eine Demo mit zwei Routern aus dem Kurs über Ansible-Netzwerke .
Das Schöne an GitLab CI ist, dass der Code aus dem Ansible-Playbook geändert und bereitgestellt werden kann, ohne dass lokale Abhängigkeiten installiert werden müssen. Ein Demo-Projekt, bei dem SNMP-Zeichenfolgen gemäß unserer Sicherheitsrichtlinie jeden Monat auf allen Geräten aktualisiert werden, kann auf GitLab.com , unserem Code-Hosting-Service, vollständig abgeschlossen werden.
Öffnen Sie zunächst das Ansible-Playbook mit 4 Aufgaben:
- Sammeln Sie Router-Fakten - Sammeln Sie Fakten über Router.
- Anzeigeversion - Anzeigeversion
- Seriennummer anzeigen
- SNMP konfigurieren - Konfigurieren Sie SNMP.
In dieser Demo konzentrieren wir uns auf die Konfiguration von SNMP-Zeichenfolgen, für die Sie einige einfache Schritte ausführen müssen.
Ausgehend von der Taskleiste
Jeder Plan in GitLab beginnt auf die gleiche Weise: mit einer Aufgabe . Der erste Schritt des GitLab-Workflows besteht also darin, das Task Board im Ansible-Demo-Projekt zu überprüfen. Auf dem Ansible-Demo-Taskboard sehen wir bereits die Aufgabe: Ändern Sie die SNMP-Leitungen auf allen Routern . Die Aufgabe enthält einen Link zur Wiki-Seite für GitLab-Sicherheitsrichtlinien, auf der angegeben ist, dass SNMP-Zeilen jeden Monat aktualisiert werden müssen. Für schreibgeschützte und Lese- und Schreibvorgänge sollten unterschiedliche Zeilen vorhanden sein.

Die Sicherheitsrichtlinie von GitLab schreibt vor, dass SNMP-Zeichenfolgen jeden Monat aktualisiert werden.
Anschließend müssen Sie sicherstellen, dass die Befehle zum Konfigurieren von SNMP-Zeichenfolgen in der Demo mit zwei Routern nicht gegen die in der Aufgabe beschriebene GitLab-Sicherheitsrichtlinie verstoßen.

Befehle zum Konfigurieren von SNMP-Zeichenfolgen finden Sie im Ansible-Playbook.
Kehren Sie dann zur Aufgabe zurück, weisen Sie sie sich selbst zu und ändern Sie die Verknüpfung von "Aufgaben" zu " doing
im rechten Bereich oder ziehen Sie die Aufgabe auf der Tafel einfach von einer Spalte in eine andere.
Zusammenführungsanforderung erstellen
Jetzt müssen Sie eine Zusammenführungsanforderung aus der Aufgabe erstellen. Stellen Sie sicher, dass die Zusammenführungsanforderung über ein WIP-Flag (Work in Progress) verfügt, damit sie nicht vorzeitig in den Assistenten gelangt. Anstatt eine lokale Verbindung herzustellen, verwenden wir die GitLab- Web-IDE, da die Änderungen an den SNMP-Leitungen geringfügig sind.
- Öffnen Sie den CI / CD-Demo-Bereich.
- Gehe zu Ansible Playbook.
- Ändern Sie den SNMP-Abschnitt wie folgt:
- Bitte beachten Sie, dass verschiedene Leitungen für RO und RW gemäß der in der Aufgabe beschriebenen GitLab-Sicherheitsrichtlinie konfiguriert sind.
Commit Commit
Sie haben die SNMP-Zeile gemäß den Anweisungen aktualisiert und müssen nun die Änderungen festschreiben. Öffnen Sie einen parallelen Änderungsvergleich, um sicherzustellen, dass die Zusammenführungsanforderung das letzte Festschreiben enthält.

Das parallele Vergleichstool zeigt die Änderungen visuell an.
Ergebnisse
Durch das Festschreiben von Änderungen wird die GitLab CI-Pipeline automatisch gestartet. Er wird folgende Aufgaben ausführen:
- Syntaxprüfung
- Testläufe.
- Testen von Änderungen in einer Labor- / künstlichen Umgebung.
Wir sehen den Fortschritt und die Ausgabe jedes Jobs in der GitLab CI-Pipeline, die SNMP aktualisiert.

Die Ausgabe Ihrer Aufgabe zeigt, dass SNMP-Aktualisierungen in der künstlichen Umgebung erfolgreich waren.
Alle diese Aufgaben werden gestartet und in der Zusammenführungsanforderung dokumentiert.

Häkchen zeigen an, dass die Aufgabe in der GitLab CI-Pipeline abgeschlossen wurde.
Melden Sie sich dann bei den Routern für eine Demo an und sehen Sie sich die Änderungen an.

Änderungen an SNMP RO- und RW-Zeichenfolgen spiegeln sich in Routern wider.
Überprüfung der Zusammenführungsanforderung
Sie können einen zusätzlichen Schritt ausführen - die Genehmigung der Zusammenführungsanforderung . Wenn Sie die Genehmigung einrichten, können mehrere Benutzer die Änderungen überprüfen, bevor sie in die Produktion gehen.

Die Zusammenführungsanforderung kann so konfiguriert werden, dass ein anderer Benutzer Ihre Werke überprüft, bevor sie im Assistenten angezeigt werden.
Übergabe an den Master
Änderungen können sofort nach dem Testen an den Assistenten gesendet werden. Ein Assistent ist der Hauptzweig, der Arbeitsbereichscode enthält.
Wenn Sie fertig sind, klicken Sie auf die Schaltfläche Resolve Work In Progress
auflösen. Klicken Sie dann auf Merge
.
Wenn Sie den WIP-Status aktivieren, kann die Zusammenführungsanforderung an den Assistenten gesendet und die Aufgabe geschlossen werden.
Die neue Pipeline führt alle Tests aus, die Sie beim zusätzlichen Start des Playbooks in der Produktion durchgeführt haben.
Verfolgen Sie den Fortschritt und die Protokolle auf dem Pipeline-Bildschirm. Wenn der Vorgang abgeschlossen ist, melden Sie sich bei den Arbeitsroutern an und überprüfen Sie, ob sich die SNMP-Leitungen geändert haben.
Magic GitLab CI
All dies ist dank der Magie von GitLab CI möglich. GitLab CI-Pipelines sind eine Reihe aufeinanderfolgender Aufgaben, die alles ausführen, was zum Testen und Implementieren von Ansible-Code erforderlich ist.
Die gesamte Konfiguration von GitLab CI passt in eine einfache YAML-Datei, die im .gitlab-ci.yml
.
In dieser Demo enthält die .gitlab-ci.yml
drei Schritte.
- Bereitstellen (Bereitstellen): Erstellt mit Ansible ein simuliertes Netzwerk mit zwei Routern in AWS.
- Demo: Führt ein Playbook durch, das die SNMP-Zeilen ändert.
- Zerstören: Zerstört ein simuliertes Netzwerk mit zwei Routern.
GitLab CI beginnt mit einem Basis-Image. In diesem Fall verwenden wir das Docker-Image, das alle erforderlichen Code- und Ansible-Abhängigkeiten enthält. Geben Sie die Befehle an, die in jeder Phase ausgeführt werden sollen, sowie die Abhängigkeiten.

Eine einfache YAML-Datei enthält drei Stufen von GitLab CI.

Die Demonstrationsphase von GitLab CI, in der das Ansible-Playbook ausgeführt wird.
Wir haben uns die Pipeline angesehen und herausgefunden, wie Sie mit GitLab CI eine Infrastruktur als Code erstellen können, ohne Ansible-Abhängigkeiten auf Ihrem Computer zu installieren. Dies ist nur ein Beispiel dafür, wie GitLab CI verwendet werden kann, um die Infrastruktur als Code zu implementieren. Eine vollständige Anleitung finden Sie im Video: