2015-09-11 2 views
2

Я хочу создать файл-конфиг для супервизора и после создания файла, чтобы «перечитать» супервизор с помощью обработчика.обработчик вызываемого вызова с переменной из задачи

моя задача:

- name: add supervised conf 
    sudo: yes 
    template: src=default.conf.j2 dest="/etc/supervisor/conf.d/{{item.name}}.conf" 
    with_items: "{{supervisorConfs}}" 
    notify: 
    - task with variable 

мой обработчик:

- name: task with variable 
    debug: "{{item}}" 

какие-либо идеи, как это можно сделать?

ответ

1

Вы не можете сделать это напрямую - обработчики не принимают аргументы. Тем не менее, вы можете имитировать поведение, которое вы хотите, зарегистрировав вывод из цикла шаблона, а затем обработайте цикл обработчика результатов, хранящихся в этом var, и только работайте с теми, которые были изменены. Конечный результат будет таким же. Было бы выглядеть примерно так:

tasks: 
    template: src=default.conf.j2 dest="/etc/supervisor/conf.d/{{item.name}}.conf" 
    with_items: "{{supervisorConfs}}" 
    register: template_out 
    notify: 
    - my_handler 

... 

handlers: 
- name: my_handler 
    debug: msg="{{ item }}" 
    with_items: "{{ template_out.results | selectattr('changed', 'equalto', true) | list }}" 
+1

Обратите внимание, что это использует selectattr фильтр и equalto тест - вам необходимо обеспечить анзибль имеет jinja2 V2.8 или выше для этого ('' 'пункт установить jinja2 --upgrade '' 'если вам нужно ...). – nitzmahone

Смежные вопросы