我是Ansible的新手,我正在尝试创建多个虚拟环境(每个项目一个,在变量中定义的项目列表).
该任务运行良好,我获得了所有文件夹,但是处理程序不起作用,它不会使用虚拟环境初始化每个文件夹.处理程序中的$ {item} varialbe不起作用.使用with_items时如何使用处理程序?
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}
Run Code Online (Sandbox Code Playgroud)
Ser*_*ter 23
无论什么(逐项子)任务请求处理程序(已更改:结果为yes),处理程序只会被"标记"执行.那时处理程序就像下一个常规任务,并且不知道逐项循环.
一个可能的解决方案不是使用处理程序,而是使用extratask + conditional
就像是
- 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40312 次 |
| 最近记录: |