Odpowiadalne zmienne pochodzą z różnych źródeł. Można na przykład udostępnić zmienne hosta i zmienne grupy, tworząc pliki YAML w podfolderze o nazwie host_vars
i group_vars
odpowiednio w folderze zawierającym plik ekwipunku.
Jak mogę wymienić wszystkich zmiennych ansibl byłoby wiedzieć o grupie lub hosta wewnątrz Playbook? Uwaga: próbowałem ansible -m debug -e 'var=hostvars' host
i ansible -m debug -e '- debug: var=hostvars'
bezskutecznie.
Wskazówka: nieansible <group|host> -m setup
jest poprawną odpowiedzią, ponieważ nie zawiera wszystkich zmiennych pochodzących z innych źródeł (zawiera tylko . W rzeczywistości nie obejmuje nawet zmiennych dostarczanych przez dynamiczny skrypt inwentaryzacji (poprzez i tak dalej).{ "ansible_facts" : { ... } }
_meta
Wersja odpowiadająca: 1.9.1.
2.0.2
wydaje się, że to już nie działa. Dane wyjściowe tolocalhost | SUCCESS => { "hostvars": "<ansible.vars.hostvars.HostVars object at 0x7f320943da10>" }
"var=hostvars[inventory_hostname]"
w ansible> 2.0ansible my.hostname.example.com -m setup -i ../my/inventory/hosts.example -u root
ansible host-name -m debug -a "var=[var_name]" -i inventory/testing/hosts
FYI: Ten projekt github pokazuje, jak wyświetlić 90% zmiennych na wszystkich hostach. Uważam, że jest to bardziej przydatne na całym świecie niż polecenia dla jednego hosta. Plik README zawiera instrukcje tworzenia prostego raportu inwentaryzacyjnego. Jeszcze bardziej wartościowe jest uruchomienie tego na końcu podręcznika, aby zobaczyć wszystkie fakty. Aby również debugować zachowanie zadania, użyj rejestru:
źródło
Dodając małą wskazówkę do naprawdę dobrej powyższej odpowiedzi, jeśli chcesz programowo szturchać, możesz
Użyj istniejącej odpowiedzi dla hostów :
Ale ansible_facts jest pusty, ponieważ
debug
nie uruchamiasetup
modułu. Musisz więc spróbować czegoś dodatkowegojq
po przycięciu danych wyjściowych, aby było prawidłowe json.Pomyślałem, że ludzie mogą to uznać za przydatne podczas badania gigantycznej ściany tekstu, która powraca w wiarygodnych faktach, kiedy chcesz tylko czegoś takiego
jq .ansible_facts.ansible_devices.vda.size
źródło