2014-10-29 14 views
15

I created a repo per riprodurre il mio scenario.Come funziona host_vars ansible?

In sostanza stiamo caricando un inventario con i nostri host, possiamo sovrascrivere i valori per host tramite l'inventario senza problemi ma vorremmo provare e utilizzare host_vars.

Non sono al 100% chiaro su come le host vars sono abbinate all'host. Ho letto il ansible repo per gli esempi, ma non riesco a farlo funzionare come documentato, quindi sto cercando un esame accurato del nostro setup.

Quando eseguo il comando ansible-playbook -i ansible.inventory site.yml -clocal nel mio repository di esempio, mi aspetto che il file host_vars/{{ ansible_hostname }} venga letto e sovrascrivo tutto ciò che è stato impostato su Vars, ma ciò non sembra avvenire.

Qualcuno può, per favore, indicarmi un esempio funzionante in modo da poter vedere dove stiamo andando male?

risposta

22

Dal momento che la documentazione non è molto specifico su questo tema qui è l'ordine di precedenza per Vars nella versione corrente di Ansible:

  1. Vars impostati sulla riga di comando -e foo = set_on_cmd_line
  2. Vars impostati nel vars_files: blocco nel gioco
  3. Vars impostati nel vars: blocco nel gioco
  4. Vars ambientato in host_vars/
  5. Vars sorge in group_vars/
  6. predefinita Ruolo vars ruoli /.../ defaults/main.yml

Si dovrebbe pensare di host_vars e group_vars più simile valori predefiniti anziché sostituzioni per valori predefiniti. Se hai lo stesso var impostato in te vars_files: il blocco like you do in your example avrà la precedenza.

+0

I percorsi che hai elencato sono * relativi *, quindi a che cosa sono relativi? Dove esegui il playbook ansible? o qualcos'altro? I percorsi di –

+1

sono relativi a dove si esegue ansible-playbook – jarv

+0

Si noti che, per le unità di inventario (ad esempio 'host_vars' e' group_vars', è possibile avere anche quei percorsi relativi al file di inventario stesso, ad esempio se si dispone del proprio inventario in 'config/inventory', quindi puoi inserire i file host_vars all'interno di 'config/host_vars/[hostname-here]'. – geerlingguy