¿Estrategia de biblioteca ansible?

¿Estrategia de biblioteca ansible?

Estoy empezando a usar ansible para la gestión de la configuración y me pregunto cómo estructurar mi directorio ansible. Por ejemplo, web1¿hay un host que necesita que se realicen modificaciones en la configuración?apachey/etc/ssh/sshd_config. jira1es un host que no usaapache, pero necesita las mismas ediciones realizadas en/etc/ssh/sshd_config.

Mi idea era crear un directorio de biblioteca debajo de mi ansibledirectorio y poner uno sshd.ymldebajo de los libros de jugadas. Podría crear un directorio de host con enlaces simbólicos a la biblioteca:

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

Esto elimina .ymlarchivos duplicados y a Ansible no parece importarle los enlaces simbólicos. De un vistazo a un subdirectorio puedo saber exactamente qué manuales se necesitan/utilizan para configurar un host determinado. Parece un buen plan, pero ¿hay alguna forma mejor de hacerlo?

Lo único que se me ocurre es equipar cada libro de jugadas con vars/factsel cual incluir/excluir cada host de la configuración. Sin embargo, ese parece ser el camino más largo; Edito cada manual de estrategias cada vez que agrego o elimino un host de la LAN.

Respuesta1

Como escribió Konstantin, debe tener roles para esos bloques de construcción estándar, grupos por tipo de servidor y guías para aplicar esos roles. Entonces tu estructura sería algo como esto:

ansible
   |
   |
   +-roles
   |   |
   |   +-sshd
   |   +-apache
   |   +-nginx
   |
   +-playbook_for_group_web.yml
   |
   +-playbook_for_group_jira.yml

información relacionada