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 ansible
diretório e colocá-lo sshd.yml
nos 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 .yml
arquivos 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/facts
o 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