Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge

Sie sind hier: Startseite / Tech-Blog / Ansible: playbooks und inventories in Unterordner organisieren

Ansible: playbooks und inventories in Unterordner organisieren

Wenn ein Ansible-Projekt wächst, dann steigt auch schnell die Anzahl der Playbooks und Inventories in einem Projektordner. Damit man den Überblick behält, kann man diese in Unterordner verschieben. Was dabei zu beachten ist, wird im folgenden erläutert.

Playbook-Dateien in Unterordnern

Seine Playbooks kann man recht einfach in Unterordner verschieben. Man sollte dabei beachten, dass man Ansible sagt, wo das roles-Verzeichnis ist. Entweder ist das z.B. /etc/ansible/roles oder flexibler ein roles-Verzeichnis innerhalb des jeweiligen Projektverzeichnisses. Dieses kann man Ansible explizit über einen Eintrag in der ansible.cfg im Projektverzeichnis definieren.

$ cat ansible.cfg
[defaults]
roles_path = ./roles

Wir legen nun z.B. 2 Unterordner für Playbooks an:

$ mkdir provisioning
$ mkdir deploy

In diese legen wir unsere jeweiligen Playbooks:

$ tree provisioning/
provisioning/
├── plone.yml
└── monitoring.yml

$ tree deploy/
deploy/
├── derico.de
└── l-tango.de

Diese können wie folgt verwendet werden.

Provisioning:

$ ansible-playbook -i live provisioning/plone.yml

Deployment:

$ ansible-playbook -i live deploy/l-tango.de

Inventory-Dateien in Unterordnern

Nun verschieben wir auch unsere Inventory-Dateien in einen Unterordner inventory:

$ tree inventory/
inventory/
├── dev
└── live

Möchte man auch seine inventory-Dateien in einen Unterordner verschieben, muss man beachten, dass Ansible die groub_vars und host_vars unter anderem relativ zum inventory sucht. Damit das auch weiterhin klappt, verschieben wir unsere groub_vars und host_vars ebenfalls Verzeichnisse in das inventory-Verzeichnis:

$ tree inventory/
inventory/
├── dev
├── group_vars
├── host_vars
│   ├── derico.de
│   └── l-tango.de
└── live

Weiterhin bietet sich an, Ansible ein default inventory zu definieren. Dies können wir in der ansible.cfg wie folgt definieren:

$ cat ansible.cfg
[defaults]
roles_path = ./roles
hostfile = inventory/dev

Die Inventories kann man nun wie folgt verwenden.

explizit:

$ ansible-playbook -i inventory/live deploy/l-tango.de

oder implizit z.B. lokal zum testen auf Vagrant-VM's:

$ ansible-playbook deploy/l-tango.de

hier wird das default inventory "inventory/dev" verwendet und auf den lokalen Test-VM's deployed.

Zentrale retry-Dateien

Möchte man jetzt noch Ansible abgewöhnen die retry-Dateien im Projektverzeichnis zu erzeugen, fügt man folgende Zeilen zur ansible.cfg hinzu:

retry_files_enabled = True
retry_files_save_path = "~/.ansible/retry"
abgelegt unter: