2016-08-28 7 views
10

mam ansibl rolę, na przykładJak mogę ukryć pominiętego zadania wyjście w ansibl

--- 
- name: Deploy app1 
    include: deploy-app1.yml 
    when: 'deploy_project == "{{app1}}"' 

- name: Deploy app2 
    include: deploy-app2.yml 
    when: 'deploy_project == "{{app2}}"' 

jednak wdrożyć tylko jedną aplikację w jednej rozmowy do naśladowania. Kiedy wdrażam kilka aplikacji, kilkakrotnie wzywam tę rolę. Ale za każdym razem jest dużo skipped tasks output (z zadań, które nie przechodzą warunku), których nie chcę widzieć. Jak mogę tego uniknąć?

+0

Jak to możliwe, aby nie wyświetlać pominięte zadania 'Wdrażanie app1' ale nie dla' Wdrażanie app2'? Chcę pominąć ten ekran tylko dla pewnej ilości zadań. –

+0

W komentarzach poniżej (http://stackoverflow.com/questions/39189549/how-can-i-hide-skipped-tasks-output-in-ansible?noredirect=1#comment65746398_39189835) omówiliśmy z @ konstantin-suvorov, że nie można pominąć nazw zadań, ponieważ są drukowane przed podjęciem jakiejkolwiek decyzji. – 32cupo

Odpowiedz

7

Ansible pozwala kontrolować jego wyjście za pomocą niestandardowego callbacks.

W takim przypadku można po prostu użyć opcji skippy callback, która nie wyświetli niczego w pominiętym zadaniu.

+0

Po skopiowaniu wtyczki do katalogu wtyczek wywołania zwrotnego i ponownym uruchomieniu playbooka, nie zauważyłem żadnych zmian. Znalazłem właściwość display_skipped_hosts w pliku ansible.cfg (http://docs.ansible.com/ansible/intro_configuration.html#display-skipped-hosts), ale nadal wyświetla nazwę pominiętych zadań. – 32cupo

+0

Czy zostawiłeś to samo? Jak wspominają dokumenty, ładuje się alfabetycznie, a "domyślny" najwyraźniej pojawia się przed 'skippy', więc nie ładował się. – ydaetskcoR

+0

Próbowałem usunąć wszystkie moje wtyczki wywołania zwrotnego, a następnie skopiowałem plik skippy.py do katalogu wywołań, uruchomiłem książkę i otrzymałem ten sam wynik. Usunąłem więc plik skippy.pyc i zmieniłem nazwę na skippy.py na akippy.py i było to to samo. Dwa razy uruchomiłem obie opcje, ale wyniki były takie same.Kiedy próbowałem innej wtyczki wywołania zwrotnego (https://github.com/n0ts/ansible-human_log) zadziałało. – 32cupo

7

Zakładam, że nie chcesz widzieć pominiętych zadań na wyjściu podczas uruchamiania Ansible.

Ustawia to na false w pliku ansible.cfg.

display_skipped_hosts = false 

Uwaga. W dalszym ciągu będzie wyświetlać nazwę zadania, chociaż nie będzie już wyświetlać "pomijanego".

AKTUALIZACJA: przy okazji należy upewnić się, że ansible.cfg znajduje się w bieżącym katalogu roboczym.

Pobrano z pliku ansible.cfg.

ansibl odczyta ANSIBLE_CONFIG, ansible.cfg w bieżącym katalogu roboczym, .ansible.cfg w katalog domowy lub /etc/ansible/ansible.cfg, cokolwiek to znajdzie pierwszy.

Upewnij się, że ustawiłeś display_skipped_hosts = false w odpowiednim pliku ansible.cfg.

Daj mi znać, jak idziesz

+0

w komentarzach z poprzedniej odpowiedzi Wspomniałem, że próbowałem tej właściwości ansible.cfg, chociaż ma ona ten sam efekt co plugin skippy. Ale dziękuję ci za odpowiedź. – 32cupo

1

Jeśli nie przeszkadza utracie kolorów można abstrahować pominięte zadania przez potokiem wyjście poprzez sed:

ansible-playbook whatever.yml | sed -nr '/^TASK/{h;n;/^skipping:/{n;b};H;x};p' 
+1

Można wymusić kolory za pomocą 'force_color = 1' w' ansible.cfg'. – ceving

+0

Działa doskonale, ale kiedy użyłem 'force_color' musiałem użyć zmodyfikowanego sed -' sed -nr '/^TASK/{h; n;/^^ [\ [0; 36mskipping:/{n; b}; H ; x}; p'' – 32cupo

-1

Jeśli używasz ról, można używać when aby anulować to w main.yml

# roles/myrole/tasks/main.yml 
- include: somefile.yml 
    when: somevar is defined 


# roles/myrole/tasks/somefile.yml 
- name: this task will only run (and be seen in the output) if somevar is defined 
    debug: 
    msg: "Hello World" 
+0

Nie spowoduje to anulowania zawarcia, ale po prostu dodaj podany, kiedy do każdego zadania wewnątrz dołącza się. Proszę przeczytać o statycznych/dynamicznych obejmuje. –

+0

@KonstantinSuvorov masz rację, myliłem się. Linia zadań jest nadal wyświetlana. Jest to dla mnie oszczędność czasu/linii, gdy chcę pominąć cały plik. – Volker

Powiązane problemy