Collection Grundgerüst erstellen
Um eine Collection zu erstellen nimmt man ein Verzeichnis für alle Seine Collections.
zum Beispiel, diese Verzeichnis. Wenn nicht besteht dann anlegen.
mkdir ~/mein-ansible/project1/collections/
#in das Verzeichnis rein gehen.
cd ~/mein-ansible/project1/collections/
Nun kann mittels ansible Galxay Befehl eine collection angelegt werden
Der Aufbau einer Collection ist immer der benutzername.collectionname
Wir nennen unsere Collection mal general
also der Befehl lautet:
ansible-galaxy collection init immohacker.general
Hier mit wird dann folgende Verzeichnisstruktur erstellt:
~/mein-ansible/project1/collections/immohacker/general/
Die Verzeichnisstruktur sieht dann so aus:
.
├── docs
├── galaxy.yml
├── plugins
│ └── README.md
├── README.md
└── roles
in der galaxy.yml kommen die Daten und die Versionsnummern rein.
bei jeder Änderung an der Collection muss die Versionsnummer in der Datei erhöht werden.
Diese Datei dient
Die wichtigsten Punkte in der Datei sind:
version:
authors : Unser Name
Description : Beschreibung der Collection, also was macht diese.
dependencies: die Collections wovon diese Collection abhängig sein könnte.
Allerdings sollte man es so bauen, das eine Colelction autak und nicht von anderen Collections abhängig ist.
Beispiel
dependencies:
#größer oder gleich 1.0.0
"other_namespace.collection1": ">=1.0.0"
#größer oder gleich 2.0.0 und kleiner als 3.0.0
"other_namespace.collection2": ">=2.0.0,<3.0.0"
"anderson55.my_collection": "*" # note: "*" selects the highest version available
repository: Git url wenn vorhanden, meistens ja.
Zumindest wenn man veröffentlichen will, sonst natürlich nicht. Dann leer lassen.
documentation: url zur Docu
homepage: wenn nicht vorhanden leer lassen
issues: githab issue tracker, wenn nicht vorhanden auch hier leer lassen.
Im rootverzeichnis kann optional noch eine
requirements.txt
erstellt werden.
In dieser werden alle Modul und Pluginsabhängikeiten eintragen, falls die Collection welche hat.
Beispiel Aufbau:
# Module deps, useful for editor intellisense, etc.
ansible-core==2.13.1
requests==2.28.1
proxmoxer==1.3.1
# Linting & Formatting
ansible-lint==6.3.0
pylint==2.14.4
autopep8==1.6.0
pre-commit==2.19.0
# Testing
tox==3.25.1
# Utility packages needed for scripts
pyyaml==6.0.0
packaging==21.3
Das wars auch schon. Schon kann darin gearbeitet werden.
Möchte man das ganze noch in ein Git Repo syncen dann siehe Abschnitt :
Ansible Collection zu Github hinzufügen