Ansible-Bibliotheksstrategie?

Ansible-Bibliotheksstrategie?

Ich fange an, Ansible für das Konfigurationsmanagement zu verwenden und frage mich, wie ich mein Ansible-Verzeichnis strukturieren soll. web1Ist beispielsweise ein Host, bei dem Konfigurationsänderungen vorgenommen werden müssen,ApacheUnd/etc/ssh/sshd_config. jira1ist 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 ansibleVerzeichnis anzulegen und eines sshd.ymlunter 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 .ymlDateien 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/factsdass 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

verwandte Informationen