Vorbereiten eines Ansible-Projekts mit Git

AnsibleBeginner
Jetzt üben

Einführung

Die Arbeit mit Ansible ist wesentlich einfacher zu verwalten, wenn jede Automatisierungsaufgabe in einem übersichtlichen Projektverzeichnis organisiert ist. Bei der Arbeit im RHCE-Stil sind zudem gute Praktiken der Versionsverwaltung unerlässlich, da Playbooks, Inventories, Variablen und Rollen allesamt Textdateien sind, die sich im Laufe der Zeit ändern.

In diesem Lab erstellen Sie ein kleines Ansible-Projekt unter /home/labex/project/rhce-ansible, initialisieren es als Git-Repository, fügen ein erstes Inventory hinzu und committen den Basisstand. Das Projekt ist bewusst klein gehalten, entspricht jedoch der Struktur, die in diesem gesamten Vorbereitungskurs verwendet wird.

Erstellen des Projektarbeitsbereichs

In diesem Schritt erstellen Sie das Projektverzeichnis sowie die ersten Ordner, die für Ansible-Projekte üblich sind. Die Option -p weist mkdir an, fehlende übergeordnete Verzeichnisse zu erstellen und keine Fehlermeldung auszugeben, falls ein Verzeichnis bereits existiert.

Wechseln Sie in den Standard-LabEx-Arbeitsbereich.

cd /home/labex/project

Erstellen Sie ein Projektverzeichnis mit den gängigen Unterverzeichnissen für Inventories, Playbooks, Variablen, Dateien, Templates und Rollen.

mkdir -p rhce-ansible/{inventory,playbooks,group_vars,host_vars,roles,files,templates}

Die Verzeichnisnamen sind Konventionen, keine zwingenden Vorgaben. Ihre Verwendung von Anfang an hilft Ihnen dabei, sich daran zu gewöhnen, wo in späteren Labs Inventory-Dateien, Variablen, wiederverwendbarer Rollencode und Quelldateien, die von Playbooks kopiert oder als Templates verwendet werden, abgelegt werden.

Listen Sie die neue Projektstruktur auf. Die Ausgabe sollte die Verzeichnisse anzeigen, die Sie gerade erstellt haben.

find rhce-ansible -maxdepth 2 -type d | sort

find gibt die Verzeichnisse im Projektbaum aus, und sort sorgt für eine stabile Reihenfolge. Zu diesem Zeitpunkt sind die Verzeichnisse noch leer, aber ihre Existenz bildet die Basisstruktur, die Sie später committen werden.

Initialisieren von Git und Festlegen der lokalen Identität

In diesem Schritt machen Sie das Projekt zu einem Git-Repository. Git speichert die Änderungshistorie in einem versteckten .git-Verzeichnis. Durch das lokale Festlegen der Identität bleibt dieses Lab in sich geschlossen und globale Benutzereinstellungen werden nicht verändert.

Wechseln Sie in das Projektverzeichnis.

cd /home/labex/project/rhce-ansible

Initialisieren Sie das Repository.

git init

Git erstellt ein verstecktes .git-Verzeichnis innerhalb des Projekts. Dieses Verzeichnis ist die Datenbank des Repositorys; die sichtbaren Ansible-Dateien verbleiben im normalen Projektbaum.

Legen Sie einen lokalen Autorennamen und eine E-Mail-Adresse für Commits in diesem Repository fest.

git config user.name "LabEx RHCE Learner"
git config user.email "learner@example.com"

Überprüfen Sie den Status des Repositorys. Git sollte melden, dass Sie sich auf einem Branch befinden und noch keine Dateien verfolgt werden.

git status --short

Das kurze Statusformat ist bewusst kompakt gehalten. Leere Verzeichnisse werden von Git nicht verfolgt, daher ist es normal, wenn dieser Befehl wenig oder gar nichts ausgibt, bis Sie echte Dateien hinzufügen.

Hinzufügen von Projektnotizen und Ignorierregeln

In diesem Schritt fügen Sie zwei einfache Projektdateien hinzu. Eine README.md erklärt den Zweck des Projekts, und .gitignore hält temporäre Dateien aus der Git-Historie fern.

Bevor Sie die Befehle in diesem Schritt ausführen, kehren Sie in das Projektverzeichnis zurück, damit sich relative Pfade auf das Ansible-Projekt beziehen.

cd /home/labex/project/rhce-ansible

Verwenden Sie ein Here-Document, um die README.md zu erstellen. Der Text zwischen den EOF-Markierungen wird exakt wie dargestellt in die Datei geschrieben.

cat > README.md <<'EOF'
## RHCE Ansible Practice Project

This repository contains guided Ansible practice files for RHCE-style automation.
EOF

Erstellen Sie eine kleine .gitignore-Datei für gängige temporäre Ansible-Artefakte.

cat > .gitignore <<'EOF'
*.retry
.artifacts/
__pycache__/
EOF

Das Muster *.retry deckt Retry-Dateien aus älteren Ansible-Workflows ab, .artifacts/ ist ein üblicher Ort für generierte Ausgaben, und __pycache__/ hält Python-Bytecode aus Ihrer Projekthistorie fern.

Lassen Sie sich beide Dateien anzeigen, um deren Inhalt zu bestätigen, bevor Sie sie verfolgen.

sed -n '1,20p' README.md .gitignore

Erstellen des ersten Inventorys

In diesem Schritt erstellen Sie ein kleines statisches Inventory. Ein Inventory benennt die Systeme, die Ansible verwalten kann. Für das erste Lab verwendet der Host mit dem Namen control die Einstellung ansible_connection=local, was bedeutet, dass Ansible Aufgaben auf derselben VM ausführt, ohne SSH zu verwenden.

Bevor Sie die Befehle in diesem Schritt ausführen, kehren Sie in das Projektverzeichnis zurück, damit sich relative Pfade auf das Ansible-Projekt beziehen.

cd /home/labex/project/rhce-ansible

Erstellen Sie inventory/hosts.

cat > inventory/hosts <<'EOF'
[control]
control ansible_connection=local
EOF

Die Zeile [control] in Klammern definiert eine Gruppe. Die nächste Zeile definiert einen Host-Alias namens control, und ansible_connection=local weist Ansible an, für dieses erste Projekt kein SSH zu verwenden.

Verwenden Sie ansible-inventory, um die Datei zu parsen. Dieser Befehl überprüft die Syntax des Inventorys, bevor Sie es in einem Playbook verwenden.

ansible-inventory -i inventory/hosts --graph

Der Graph sollte die Gruppe control und den Host control enthalten.

Committen des Basisprojekts

In diesem Schritt fügen Sie die Basisdateien zu Git hinzu und erstellen den ersten Commit. Ein Commit ist ein benannter Prüfpunkt, den Sie später untersuchen können.

Bevor Sie die Befehle in diesem Schritt ausführen, kehren Sie in das Projektverzeichnis zurück, damit sich relative Pfade auf das Ansible-Projekt beziehen.

cd /home/labex/project/rhce-ansible

Stagen Sie die Dateien. Das Staging teilt Git mit, welche Änderungen in den nächsten Commit aufgenommen werden sollen.

git add README.md .gitignore inventory/hosts

Erstellen Sie den Basis-Commit.

git commit -m "Create Ansible project baseline"

Die Ausgabe des Commits sollte die Dateien auflisten, die dem Repository hinzugefügt wurden. Falls Git meldet, dass es nichts zu committen gibt, führen Sie git status --short erneut aus und stellen Sie sicher, dass README.md, .gitignore und inventory/hosts gestaged wurden.

Überprüfen Sie den finalen Status und den letzten Commit. Ein sauberer Status bedeutet, dass alle verfolgten Änderungen committet wurden.

git status --short
git log --oneline -1

git status --short sollte nun leer sein, und git log --oneline -1 sollte die neue Commit-Nachricht anzeigen. Damit haben Sie einen bekannten, funktionierenden Prüfpunkt, bevor in späteren Labs weitere Ansible-Inhalte hinzugefügt werden.

Zusammenfassung

Sie haben einen sauberen Ansible-Projektarbeitsbereich erstellt, Git initialisiert, ein grundlegendes Inventory hinzugefügt und den ersten Basisstand committet. Diese Projektgewohnheiten werden die Verwaltung späterer Playbooks, Variablen, Templates, Rollen und Validierungsdateien erheblich erleichtern.