É possível / como incluiria arquivos vars de outros arquivos vars?

5

Eu sei que é possível incluir arquivos de tarefas / manipuladores em outros arquivos semelhantes por meio de linhas como as seguintes

- name: Configure django
  include: django.yml
- name: Configure nginx reverse proxy
  include: nginx.yml

Mas, de acordo com a documentação , não parece essa funcionalidade existe para arquivos em vars/ ou defaults/ . O problema que estou enfrentando é que tenho muitas variáveis que modificam aspectos fundamentalmente diferentes de uma função, mas todas as variáveis são divididas em seções diferentes dentro do mesmo arquivo ( defaults/main.yml ) usando comentários (por exemplo, # BEGIN RoR config vars ... # END RoR config vars ).

É muito feio e difícil de manejar, mas mais direto ao ponto não é modular, e isso torna a manutenção da coisa muito mais difícil.

Editar: já que alguém votou pelo fechamento porque achou que isso não estava claro ...

Isso é parecido com o que eu tenho (tudo em um arquivo):

## Database variables

database:
  user: bob
  pass: bobs_pass
  host: dbhost

## Server variable

server:
  su_user: nobody
  max_connections: 50

Fornecendo saída ls-R de:

./defaults/main.yml

E é isso que eu prefiro ter:

- name: Include database vars
  include: database.yml
- name: Include app server vars
  include: server.yml

Com saída ls -R:

./defaults/main.yml
./defaults/database.yml
./defaults/server.yml
    
por Parthian Shot 08.06.2015 / 23:18

1 resposta

8

Por que não? Eu faço isso o tempo todo em roles/whatever/tasks/main.yml com include_vars :

- include_vars: whatever_os_{{ ansible_distribution }}_{{ ansible_distribution_major_version }}.yml

As variáveis são carregadas do diretório vars da função. Em um playbook, o caminho é relativo ao playbook, ou você pode usar um caminho absoluto.

No caso acima, tenho variáveis específicas do sistema operacional nesses arquivos:

$ ls -l roles/whatever/vars
total 48
lrwxrwxrwx. 1 error error  24 Feb  2 21:56 whatever_os_CentOS_5.yml -> whatever_os_RedHat_5.yml
lrwxrwxrwx. 1 error error  24 Feb  2 21:56 whatever_os_CentOS_6.yml -> whatever_os_RedHat_6.yml
lrwxrwxrwx. 1 error error  24 Feb  2 21:56 whatever_os_CentOS_7.yml -> whatever_os_RedHat_7.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Debian_6.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Debian_7.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Debian_8.yml
-rw-r--r--. 1 error error 173 Apr 28 14:59 whatever_os_Fedora_20.yml
-rw-r--r--. 1 error error 173 Mar 22 01:51 whatever_os_Fedora_21.yml
-rw-r--r--. 1 error error 173 May  9 23:18 whatever_os_Fedora_22.yml
-rw-r--r--. 1 error error 188 Mar 22 01:51 whatever_os_RedHat_5.yml
-rw-r--r--. 1 error error 191 Mar 22 01:51 whatever_os_RedHat_6.yml
-rw-r--r--. 1 error error 189 Mar 22 01:51 whatever_os_RedHat_7.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Ubuntu_10.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Ubuntu_12.yml
-rw-rw-r--. 1 error error  81 May  9 23:17 whatever_os_Ubuntu_14.yml
    
por 08.06.2015 / 23:25

Tags