2014-10-29 21 views
15

I created a repo do odtworzenia mojego scenariusza.Jak działa ansible host_vars?

Zasadniczo ładujemy inwentarz z naszymi hostami, możemy przesłonić wartości dla hosta za pośrednictwem zasobów reklamowych bez problemu, ale chcielibyśmy spróbować wykorzystać host_vars.

Nie jestem w 100% jasne, w jaki sposób host vars są dopasowane do hosta. Czytałem ansible repo dla przykładów, ale nie mogę sprawić, żeby działało jak udokumentowane, więc szukam jakiejś analizy naszej konfiguracji.

Po uruchomieniu polecenia ansible-playbook -i ansible.inventory site.yml -clocal w moim przykładowym repo oczekuję, że plik host_vars/{{ ansible_hostname }} zostanie odczytany i zastąpi wszystko ustawione w partiach, ale wydaje się, że to się nie dzieje.

Czy ktoś może wskazać mi działający przykład, aby przekonać się, dokąd zmierzamy?

Odpowiedz

22

Ponieważ dokumentacja nie jest bardzo specyficzny na ten temat tutaj jest kolejność pierwszeństwa dla Vars w aktualnej wersji ansibl:

  1. Vars ustawione w linii poleceń -e foo = set_on_cmd_line
  2. Vars ustawione w vars_files: blok w sztuce
  3. Vars ustawione w vars: blok w sztuce
  4. Vars ustawić w host_vars/
  5. Vars ustawić w group_vars/
  6. domyślny Rola vars role /.../ defaults/main.yml

Trzeba myśleć host_vars i group_vars bardziej jak domyślnie zamiast przesłonięć dla wartości domyślnych. Jeśli masz ten sam zestaw var vars_files: blok like you do in your example będzie miał pierwszeństwo.

+0

Ścieżki, które masz na liście, są * względne *, więc z czym są one powiązane? Gdzie uruchamiasz ansible-playbook? albo coś innego? –

+1

ścieżki są zależne od tego, gdzie uruchamia ansible-playbook – jarv

+0

Zwróć uwagę, że dla zmiennych inwentaryzacyjnych (np. 'Host_vars' i' group_vars', możesz również mieć te ścieżki względem samego pliku inwentarza. Np. Jeśli masz swój ekwipunek w 'config/inventory', wtedy możesz umieścić pliki host_vars wewnątrz 'config/host_vars/[hostname-here]'. – geerlingguy

Powiązane problemy