在Ansible中扮演两次角色

时间:2020-02-25 15:23:06

标签: ansible

我这样写剧本:

 name: install kubernetes 
 hosts:  [kuber]
 roles:
   - A
   - B
   - C
   - B

这意味着我想运行B role两次,但是基于结果,第二个B甚至没有运行。 我应该怎么做才能多次担任角色?

2 个答案:

答案 0 :(得分:1)

参考:https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-duplication-and-execution

要使角色多次运行,有两种选择:

  1. 在每个角色定义中传递不同的参数。
  2. 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

答案 1 :(得分:0)

使用include_role

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