Powiedz, że wykonuję następujące czynności.
$ cat test.sh
#!/bin/bash
echo Hello World
exit 0
$ cat Hello.yml
---
- hosts: MyTestHost
tasks:
- name: Hello yourself
script: test.sh
$ ansible-playbook Hello.yml
PLAY [MyTestHost] ****************************************************************
GATHERING FACTS ***************************************************************
ok: [MyTestHost]
TASK: [Hello yourself] ********************************************************
ok: [MyTestHost]
PLAY RECAP ********************************************************************
MyTestHost : ok=2 changed=0 unreachable=0 failed=0
$
Wiem na pewno, że się udało.
Gdzie / jak mogę zobaczyć echo / wydruk „Hello World” przez mój skrypt na zdalnym hoście (MyTestHost)? Albo kod powrotu / zakończenia skryptu?
Moje badania pokazują mi, że byłoby możliwe napisanie wtyczki przechwytującej wywołania zwrotne modułu lub coś w tych wierszach i zapisanie pliku dziennika. Wolałbym nie tracić na to czasu.
Np. Coś takiego jak stdout poniżej (zauważ, że uruchamiam ansibla, a nie ansible-playbook):
$ ansible plabb54 -i /project/plab/svn/plab-maintenance/ansible/plab_hosts.txt -m script -a ./test.sh
plabb54 | success >> {
"rc": 0,
"stderr": "",
"stdout": "Hello World\n"
}
$
set -x
iwset +x
skrypcie powłoki.no_log: True
flagi, aby zapobiec rejestrowaniu polecenia lub podręcznika, ale wydaje mi się, że jest to tak drobnoziarniste, jak to tylko możliwe.logrotate
abylog_path
każdyansible
przebieg miał inny plik (z poleceniem / playbookem zawartym w pliku)?v
sekund, aby uzyskać stdout i stderrZadanie skryptu playbook wygeneruje się
stdout
tak samo jak polecenie inne niż playbook, wystarczy je zapisać w zmiennej za pomocąregister
. Gdy już to zrobimy, moduł debugowania może drukować do strumienia wyjściowego elementu playbook.Wynik powinien wyglądać mniej więcej tak:
źródło
Istnieje również inny sposób generowania pliku dziennika.
Przed uruchomieniem
ansible-playbook
uruchom następujące polecenia, aby włączyć rejestrowanie:Określ lokalizację pliku dziennika.
Włącz debugowanie
Aby sprawdzić wygenerowany plik dziennika.
źródło
Oficjalne wtyczki
Możesz użyć wtyczek wywołania zwrotnego . Na przykład, zaczynając od Ansible 2.4, możesz użyć wtyczki wywołania zwrotnego wyjścia debugowania :
(Alternatywnie, uruchom
export ANSIBLE_STDOUT_CALLBACK=debug
przed uruchomieniem playbooka)Ważne: należy uruchomić
ansible-playbook
z-v
(--verbose
opcja), aby zobaczyć efekt. Postdout_callback = debug
ustawieniu wyjście powinno teraz wyglądać mniej więcej tak:Istnieją inne moduły oprócz
debug
modułu, jeśli chcesz, aby dane wyjściowe były inaczej sformatowane. Tamjson
,yaml
,unixy
,dense
,minimal
, itd. ( Pełna lista ).Na przykład, z
stdout_callback = yaml
, wynik będzie wyglądał mniej więcej tak:Wtyczki innych firm
Jeśli żadna z oficjalnych wtyczek nie jest zadowalająca, możesz wypróbować
human_log
wtyczkę. Istnieje kilka wersji:https://github.com/n0ts/ansible-human_log
https://gist.github.com/cliffano/9868180
źródło
Korzystając z wtyczek wywołania zwrotnego, możesz mieć standardowe wyjście swoich poleceń w czytelnej formie za pomocą play: gist: human_log.py
źródło
Pomoc wiersza polecenia Ansible, na przykład
ansible-playbook --help
pokazuje, jak zwiększyć szczegółowość danych wyjściowych, ustawiając tryb gadatliwości (-v) na większą szczegółowość (-vvv) lub szczegółowość debugowania połączenia (-vvvv). Powinno to dać ci niektóre szczegóły, których szukasz w stdout, które możesz następnie zarejestrować.źródło