Ich fange an, Ansible für das Konfigurationsmanagement zu verwenden und frage mich, wie ich mein Ansible-Verzeichnis strukturieren soll. web1
Ist beispielsweise ein Host, bei dem Konfigurationsänderungen vorgenommen werden müssen,ApacheUnd/etc/ssh/sshd_config. jira1
ist ein Host, der nicht verwendetApache, aber es müssen die gleichen Änderungen vorgenommen werden wie/etc/ssh/sshd_config.
Meine Idee war, ein Bibliotheksverzeichnis unter meinem ansible
Verzeichnis anzulegen und eines sshd.yml
unter den Playbooks. Ich könnte ein Host-Verzeichnis mit symbolischen Links zur Bibliothek anlegen:
ansible
|
|
+ library
| |
| +- sshd.yml
| +- apache.yml
| +- nginx.yml
+ web1
| |
| + playbooks
| |
| +- symlink_to_../../library/sshd.yml
| +- symlink_to_../../library/apache.yml
+ jira1
|
+ playbooks
|
+- symlink_to_../../library/sshd.yml
+- symlink_to_../../library/nginx.yml
Dadurch werden doppelte .yml
Dateien eliminiert und Ansible scheint sich nicht an den Symlinks zu stören. Mit einem Blick in ein Unterverzeichnis kann ich genau erkennen, welche Playbooks für die Konfiguration eines bestimmten Hosts benötigt/verwendet werden. Das scheint ein gutes Schema zu sein, aber gibt es eine bessere Möglichkeit, dies zu tun?
Das einzige, was mir sonst noch einfällt, ist, jedes Playbook so auszustatten, vars/facts
dass jeder einzelne Host in die Konfiguration einbezogen/ausgeschlossen wird. Das scheint jedoch der lange Weg zu sein; jedes einzelne Playbook jedes Mal zu bearbeiten, wenn ich einen Host zum LAN hinzufüge oder daraus entferne.
Antwort1
Wie Konstantin schrieb, sollten Sie Rollen für diese Standardbausteine, Gruppen pro Servertyp und Playbooks haben, um diese Rollen anzuwenden. Ihre Struktur würde also ungefähr so aussehen:
ansible
|
|
+-roles
| |
| +-sshd
| +-apache
| +-nginx
|
+-playbook_for_group_web.yml
|
+-playbook_for_group_jira.yml