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. jira1
es 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 ansible
directorio y poner uno sshd.yml
debajo 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 .yml
archivos 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/facts
el 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