2013-08-21 14 views
13

Jestem nowy w Ansible i próbuję utworzyć kilka środowisk wirtualnych (po jednym dla każdego projektu, lista projektów zdefiniowanych w zmiennej).

Zadanie działa dobrze, mam wszystkie foldery, jednak program obsługi nie działa, nie inicjuje każdego folderu ze środowiskiem wirtualnym. $ {Item} varialbe w module obsługi nie działa. Jak korzystać z obsługi, gdy używam with_items?

Odpowiedz

20

Handlery są po prostu "oznaczone" do wykonania, gdy cokolwiek (wyszczególnione pod-) zadanie zażąda (po zmianie: tak w wyniku). W tym czasie procedury obsługi są jak następne zwykłe zadania i nie mają informacji o szczegółowej pętli.

Możliwym rozwiązaniem nie jest z obsługi, ale z extratask + warunkowego

coś podobnego

- hosts: all 
    gather_facts: false 
    tasks: 
    - action: shell echo {{item}} 
    with_items: 
    - 1 
    - 2 
    - 3 
    - 4 
    - 5 
    register: task 
    - debug: msg="{{item.item}}" 
    with_items: task.results 
    when: item.changed == True 
+0

To działa! Ale powtarzanie listy dyktów daje brzydki wynik. Szkoda, że ​​with_items nie obsługuje wyrażeń pythonowych – Radagast

+4

Można również utworzyć procedurę obsługi powiadomień i umieścić w niej "with_items: task.results". Jeśli obawiasz się brzydkiego wyniku, możesz kontrolować, co zostanie przekazane do klauzuli "with_items:" w następujący sposób: "with_items: task.results | selectattr ('changed') | map (attribute = 'item') | list" (i nie zapomnij zmienić "item.item" na "item" w "debug: msg = ...") –

Powiązane problemy