Dependencies Ansible角色取决于未多次运行的其他角色

Dependencies Ansible角色取决于未多次运行的其他角色,dependencies,ansible,ansible-playbook,Dependencies,Ansible,Ansible Playbook,我正在运行Ansible 1.9.3,无法从Ansible文档中获取有效信息 $ ansible --version ansible 1.9.3 configured module search path = None 这是我的档案: $ find ./ -type f | while read f; do printf "# %s\n" "$f"; cat "$f"; printf "\n\n"; done # ./inventory [webservers] example.com

我正在运行Ansible 1.9.3,无法从Ansible文档中获取有效信息

$ ansible --version
ansible 1.9.3
  configured module search path = None
这是我的档案:

$ find ./ -type f | while read f; do printf "# %s\n" "$f"; cat "$f"; printf "\n\n"; done

# ./inventory
[webservers]
example.com

# ./roles/app/meta/main.yml
---
dependencies:
  - { role: wheel, n: 1 }
  - { role: wheel, n: 2 }
  - { role: wheel, n: 3 }
  - { role: wheel, n: 4 }

# ./roles/tire/tasks/main.yml
- name: "tire {{ n }}"
  command: "echo tire {{ n }}"

# ./roles/wheel/meta/main.yml
---
allow_duplicates: yes
dependencies:
  - { role: tire }

# ./roles/wheel/tasks/main.yml
- name: "wheel {{ n }}"
  command: "echo wheel {{ n }}"

# ./site.yml
---
- include: webservers.yml

# ./webservers.yml
---
- hosts: webservers
  roles:
    - role: app
因此
app
角色取决于
wheel
角色的四个实例,这四个实例又取决于
tire
角色

但是,运行playbook仅显示一次执行
tire
任务:

$ ansible-playbook -v -i inventory site.yml

PLAY [webservers] ************************************************************* 

GATHERING FACTS *************************************************************** 
ok: [example.com]

TASK: [tire | tire 1] ********************************************************* 
changed: [example.com] => {"changed": true, "cmd": ["echo", "tire", "1"], "delta": "0:00:00.004721", "end": "2015-09-29 16:55:27.075745", "rc": 0, "start": "2015-09-29 16:55:27.071024", "stderr": "", "stdout": "tire 1", "warnings": []}

TASK: [wheel | wheel 1] ******************************************************* 
changed: [example.com] => {"changed": true, "cmd": ["echo", "wheel", "1"], "delta": "0:00:00.004355", "end": "2015-09-29 16:55:27.806182", "rc": 0, "start": "2015-09-29 16:55:27.801827", "stderr": "", "stdout": "wheel 1", "warnings": []}

TASK: [wheel | wheel 2] ******************************************************* 
changed: [example.com] => {"changed": true, "cmd": ["echo", "wheel", "2"], "delta": "0:00:00.005012", "end": "2015-09-29 16:55:28.539339", "rc": 0, "start": "2015-09-29 16:55:28.534327", "stderr": "", "stdout": "wheel 2", "warnings": []}

TASK: [wheel | wheel 3] ******************************************************* 
changed: [example.com] => {"changed": true, "cmd": ["echo", "wheel", "3"], "delta": "0:00:00.003573", "end": "2015-09-29 16:55:29.259193", "rc": 0, "start": "2015-09-29 16:55:29.255620", "stderr": "", "stdout": "wheel 3", "warnings": []}

TASK: [wheel | wheel 4] ******************************************************* 
changed: [example.com] => {"changed": true, "cmd": ["echo", "wheel", "4"], "delta": "0:00:00.003541", "end": "2015-09-29 16:55:29.981742", "rc": 0, "start": "2015-09-29 16:55:29.978201", "stderr": "", "stdout": "wheel 4", "warnings": []}

PLAY RECAP ******************************************************************** 
example.com : ok=6    changed=5    unreachable=0    failed=0   

我在两个
meta/main.yml
文件中尝试了各种组合的
allow_duplicates:yes | no
,但每次都得到相同的结果。目标是四次执行
wheel
tire
任务,其中
n
等于1,2,3,4。

我遇到了同样的问题,并向Ansible github repo提交了一张票据:


它已被合并到v2.0中。由于2.0尚未发布,而且还不清楚迁移会带来什么,我不得不重新调整我的角色。不幸的是,我相信我把他们组合成了同一个角色。

谢谢你的链接。由于一个不同的错误,我停止使用2.0alpha,并切换回1.9.3,但也许我会再次测试它。我或多或少已经放弃了尝试使用参数化角色依赖关系。相反,我使用模板生成静态角色,包括角色需要的所有任务。