Question:
I am new to Ansible and I am trying to create several virtual environments (one for each project, the list of projects being defined in a variable).
The task works well, I got all the folders, however the handler does not work, it does not init each folder with the virtual environment. The ${item} varialbe in the handler does not work.
How can I use an handler when I use with_items ?
1 2 3 4 5 6 7 8 9 10 |
tasks: - name: create virtual env for all projects ${projects} file: state=directory path=${virtualenvs_dir}/${item} with_items: ${projects} notify: deploy virtual env handlers: - name: deploy virtual env command: virtualenv ${virtualenvs_dir}/${item} |
Answer:
Handlers are just ‘flagged’ for execution once whatever (itemized sub-)task requests it (had the changed: yes in its result).
At that time handlers are just like a next regular tasks, and don’t know about the itemized loop.
A possible solution is not with a handler but with an extratask + conditional
Something like
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
- 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 |