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: namespace: name des darunter liegenden spaces. Ich nehme immer den namen vom github Konto in diesem Fall immohacker name : name der collection z.b general 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 autark und nicht von anderen Collections abhängig ist. ansonsten wenn es geht die Abhängigkeiten mit in die Collection einbauen, Nachteil die Abhängigkeiten werden dann halt nur nicht mehr automatisch gepflegt, diese muss man dann jedes mal selbst aktualisieren. Aber falls nicht anders geht, hier ein Beispiel für Abhängikeiten 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