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"