Czy istnieje zmienna ansible, która ma bezwzględną ścieżkę do aktualnie wykonywanego playbooka ansible?
jakiś kontekst:
uruchamiam / tworzę skrypt ansible, localhost
aby skonfigurować docker mysql i chcę zamontować wolumin danych względem skryptu ansible.
Na przykład, powiedzmy, że wyewidencjonowałem repozytorium, ~/branch1/
a potem uruchomiłem ansible-playbook dev.yml
i pomyślałem, że powinien zapisać wolumin ~/branch1/.docker_volume/
. Jeśli uruchomiłem go od ~/branch2
tego momentu, powinien on skonfigurować wolumin na ~/branch2/.docker_volume/
.
Odpowiedzi:
Możesz użyć
playbook_dir
zmiennej.źródło
playbook_dir
udokumentowano zmienną. Czy mógłbyś wskazać mi dokumentację? LUB, czy mógłbyś wyjaśnić, w jaki sposób dowiedziałeś się o tej zmiennej?Wygląda na to, że nie ma zmiennej, która zawiera dokładnie to, czego chcesz.
Jednak cytując dokumenty :
W zależności od konfiguracji te lub
$ pwd
rozwiązania bazowe mogą wystarczyć.źródło
Niestety nie ma. W rzeczywistości ścieżka absolutna jest nieco bez znaczenia (i potencjalnie myląca) w kontekście sposobu działania Ansible. Krótko mówiąc, po wywołaniu elementu playbook, Ansible fizycznie kopiuje moduł powiązany z zadaniem do katalogu tymczasowego na komputerze docelowym dla każdego zadania, a następnie wywołuje moduł z niezbędnymi parametrami. Tak więc ścieżka bezwzględna na maszynie docelowej jest tylko katalogiem tymczasowym, który zawiera tylko kilka plików tymczasowych i nie zawiera nawet pełnego playbooka. Ponadto znajomość pełnej ścieżki pliku na serwerze Ansible jest prawie bezużyteczna na maszynie docelowej, chyba że replikujesz całe drzewo katalogów Ansible na cele.
Aby zobaczyć wszystkie zmienne zdefiniowane przez Ansible, możesz po prostu uruchomić następujące polecenie :
Jaki jest powód, dla którego uważasz, że musisz znać absolutną ścieżkę do poradnika?
źródło
local_action
moduł, oznacza, że istnieją do tego uzasadnione przypadki użycia.Używałem takiego podręcznika, aby przetestować swoje role lokalnie:
ale to przestało działać z Ansible v2.2.
Debugowałem wyżej wspomniane rozwiązanie
i utworzył mój katalog domowy, a nie „bieżący katalog roboczy”
Zgodziłem się z
zgodnie z powyższym rozwiązaniem.
źródło
Nie ma wbudowanej zmiennej do tego celu, ale zawsze możesz znaleźć bezwzględną ścieżkę playbooka za pomocą polecenia "pwd" i zarejestrować jego wyjście w zmiennej.
Teraz ścieżka jest dostępna w zmiennej playbook_path_output.stdout
źródło
pwd
nie zwraca ścieżki do skryptu playbook. Zwraca bieżący katalog procesu (normalnieansible-playbook
). Nie muszą być takie same i zależą od dokładnego sposobu, w jaki został wywołany ansibl.debug: var=ansible_env.PWD
(daje mi to katalog, z którego wykonałemansible-playbook
na moim komputerze lokalnym i katalog domowy na zdalnych serwerach){{ lookup('env','PWD') }}