Sie werden feststellen, dass die offiziellen Empfehlungen für das Verzeichnislayout alle Playbooks auf die Stammebene stellen. Dies ist beabsichtigt, da Ansible andere Schemata nicht gut handhabt.
Sie können Playbooks wie begonnen in ein Unterverzeichnis einfügen. Dies erfordert jedoch (wie Sie bereits festgestellt haben) die Verwendung relativer Pfade von den Playbooks zu anderen von ihnen verwendeten Ressourcen. Ansible verwendet den Playbook-Pfad, um die Suche zu starten. So wird es geschrieben. Zum größten Teil ist dies genau das, womit Sie sich befassen müssen, wenn Sie sich entscheiden, dorthin zu ziehen, wo Playbooks leben.
Sie scheinen jedoch mehr Verschachtelung zu haben, als Sie sollten:
---
- hosts: aws_instance.jenkins-agents
user: ec2-user
vars_files:
- ../../../vars/main.yaml
- ../../../vars/vault.yaml
...
Warum navigieren Sie in drei Verzeichnissen? Ich würde ein Layout erwarten, das dem offiziellen ähnelt, aber einen Unterordner für Playbooks enthält. dann würden Sie mit nur enden
---
- hosts: aws_instance.jenkins-agents
user: ec2-user
vars_files:
- ../vars/main.yaml
- ../vars/vault.yaml
...
Das ist eine viel kleinere Änderung.
Zweitens ist es ziemlich selten, dass Sie tatsächlich verwenden möchten vars_files
. Die meisten in Ansible verwendeten Variablen variieren entweder je nach Host (und sollten daher in group_vars
/ host_vars
im Projektstamm gespeichert werden) oder sind rollenspezifisch (und sollten daher in vars
/ defaults
im Rollenverzeichnis gespeichert werden). Einige Dokumentationslinks:
Persönlich denke ich, dass es am besten ist, so wenig wie möglich in Ihren Spielbüchern zu haben, aber alles an Rollen zu delegieren. Hier ist ein Beispiel für das gesamte Spielbuch in Ihrem Setup:
- hosts: aws_instance.jenkins-agents
roles:
- ../roles/jenkins_agent
Dies gibt Ihnen viel mehr Flexibilität bei der Wiederverwendung.
Wenn Sie keine relativen Pfade für Rollen verwenden möchten, können Sie diese im Stammverzeichnis überschreiben, roles_path
in ansible.cfg
dem Sie Ihre Ansible-Befehle ausführen.
../../../vars
?