Você notará que as recomendações oficiais para o layout do diretório colocam todos os manuais no nível raiz. Isso é intencional, pois o Ansible não lida bem com outros esquemas.
Você pode colocar playbooks em um subdiretório, como você começou a fazer, mas isso exigirá (como você já encontrou) o uso de caminhos relativos dos playbooks para quaisquer outros recursos que eles usarem; O Ansible usa o caminho do playbook para iniciar sua pesquisa, é assim que está escrito. Na maioria das vezes, é exatamente com isso que você lida quando decide mudar para onde os playbooks vivem.
No entanto, você parece ter mais aninhamento do que deveria:
---
- hosts: aws_instance.jenkins-agents
user: ec2-user
vars_files:
- ../../../vars/main.yaml
- ../../../vars/vault.yaml
...
Por que você está navegando em três diretórios? Eu esperaria um layout que seja como o oficial, mas com uma subpasta para playbooks; então você acabaria com apenas
---
- hosts: aws_instance.jenkins-agents
user: ec2-user
vars_files:
- ../vars/main.yaml
- ../vars/vault.yaml
...
o que é uma mudança muito mais pequena.
Em segundo lugar, é muito raro que você realmente queira usar vars_files
. A maioria das variáveis usadas no Ansible varia de acordo com o host (e, portanto, deve estar na group_vars
/ host_vars
na raiz do projeto) ou é específica da função (e, portanto, deve estar no vars
/ defaults
no diretório da função). Alguns links de documentação:
Pessoalmente, acho que é melhor ter o mínimo possível em suas cartilhas, mas delegar tudo para as funções. Aqui está um exemplo de manual completo em sua configuração:
- hosts: aws_instance.jenkins-agents
roles:
- ../roles/jenkins_agent
Isso oferece muito mais flexibilidade para reutilização.
E se você não desejar usar caminhos relativos para funções, poderá substituí roles_path
-lo ansible.cfg
no diretório raiz de onde executa os comandos Ansible.
../../../vars
?