在Ansible中运行角色两次

在Ansible中运行角色两次,ansible,Ansible,我是这样写剧本的: name: install kubernetes hosts: [kuber] roles: - A - B - C - B 这意味着我想运行两次B角色,但根据结果,第二个B甚至没有运行。 要多次运行角色,我应该怎么做?使用包含角色: name: install kubernetes hosts: [kuber] tasks: - include_role: name: A - include_role: name

我是这样写剧本的:

 name: install kubernetes 
 hosts:  [kuber]
 roles:
   - A
   - B
   - C
   - B
这意味着我想运行两次
B角色
,但根据结果,第二个B甚至没有运行。
要多次运行角色,我应该怎么做?

使用
包含角色

 name: install kubernetes 
 hosts:  [kuber]
 tasks:
 - include_role:
   name: A
 - include_role:
   name: B
 - include_role:
   name: C
 - include_role:
   name: B
参考:

要使角色多次运行,有两个选项:

  • 在每个角色定义中传递不同的参数
  • allow_duplicates:true
    添加到角色的
    meta/main.yml
    文件中
  • 因此,在您的案例中,一个简单的解决方法如下:

    - name: install kubernetes
      hosts:  [kuber]
      roles:
       - role: A
       - role: B
         vars:
           fake_param: firstinclude
       - role: C
       - role: B
         vars:
           fake_param: secondinclude
    

    是的,这是一种方式。但我仍然不明白为什么第二个B角色没有执行!!因为这是一个列表,它被规范化了。@jack:不完全是。如果您在角色的
    meta/main.yml
    中允许重复:true,并保持列表不变,则该角色将扮演两次。很高兴知道。谢谢