¿Cómo utilizar Ansible para gestionar múltiples servidores con configuración de múltiples sitios web?

¿Cómo utilizar Ansible para gestionar múltiples servidores con configuración de múltiples sitios web?

He investigado Ansible para aprovisionar nuevos servidores y funciona muy bien. Mi juego instala MySQL, Nginx y todo lo demás. Ahora me pregunto cuál es la mejor manera de utilizarlo también como herramienta de gestión de configuración.

Ejecutamos múltiples sitios web en cada servidor. Para mí, esto significa una configuración general de Nginx en cada servidor y una configuración específica requerida para cada sitio/dominio. Tengo en mente que puedo actualizar tanto la configuración general como la configuración específica de forma independiente con Ansible cuando lo necesite (digamos nuevos conocimientos o seguridad).

¿Qué necesitaría hacer en esta situación? ¿Esto requiere que mantenga una variable que contenga todos los sitios y en qué sitio se encuentran? ¿O hay mejores alternativas?

Respuesta1

Una característica de la plantilla que podría utilizar con gran beneficio para este propósito es su capacidad de creación de plantillas.

ElplantillaEl módulo le permite implementar un archivo con valores únicos para cada host. El nombre del host en el que se está trabajando actualmente se mantiene en las variables inventario_hostname e inventario_hostname_short (siendo esta última el primer componente punteado del nombre de host).

Puede mantener las variables específicas del host en un diccionario en group_vars/all. Por ejemplo:

www_sites: {
    host1: "www.mysite1.com",
    host2: "www.mysite2.com",
  }

Entonces, la plantilla para el archivo nginx conf podría incluir algo como lo siguiente:

server {
  listen       80;
  server_name  {{ www_sites[inventory_hostname_short] }};
  access_log   logs/{{ www_sites[inventory_hostname_short] }}.access.log  main;

Se puede encontrar la documentación para el lenguaje de plantillas Jinja2 utilizado por Ansible.aquí.

Respuesta2

Utilizo vars para hacer cosas específicas para ese host en cuestión. Mi consejo es agrupar tanto como sea posible a sus anfitriones en grupos y utilizar variables de grupo. Recuerde que los manuales de Ansible son fantásticos para realizar versiones en git o SVN, de modo que pueda realizar un seguimiento de sus cambios.

Algo que podría funcionar para usted es usar vars_prompt, especialmente si no ejecuta sus libros de jugadas programados en cron.

¡Espero que esto ayude!

información relacionada