Estratégia de biblioteca Ansible?

Estratégia de biblioteca Ansible?

Estou começando a usar o ansible para gerenciamento de configuração e me perguntando como estruturar meu diretório ansible. Por exemplo, web1é um host que precisa de edições de configuração feitas paraApachee/etc/ssh/sshd_config. jira1é um host que não usaApache, mas precisa das mesmas edições feitas em/etc/ssh/sshd_config.

Meu pensamento era criar um diretório de biblioteca no meu ansiblediretório e colocá-lo sshd.ymlnos manuais. Eu poderia criar um diretório host com links simbólicos para a 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

Isso elimina .ymlarquivos duplicados e o ansible não parece se importar com os links simbólicos. Olhando rapidamente para um subdiretório, posso dizer exatamente quais manuais são necessários/usados ​​para configurar um determinado host. Parece um bom esquema, mas existe uma maneira melhor de fazer isso?

A única outra coisa em que consigo pensar é equipar cada manual com vars/factso qual incluir/excluir cada host da configuração. Mas esse parece ser o caminho mais longo; edito cada manual sempre que adiciono ou removo um host da LAN.

Responder1

Como Konstantin escreveu, você deve ter funções para esses blocos de construção padrão, grupos por tipo de servidor e manuais para aplicar essas funções. Então sua estrutura seria algo assim:

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

informação relacionada