Ansible 在角色之间共享重复的代码块

Ansible 在角色之间共享重复的代码块,ansible,ansible-playbook,ansible-2.x,Ansible,Ansible Playbook,Ansible 2.x,在我的大多数角色的开头,有以下代码块。它尝试加载操作系统和特定于版本的变量和任务。我是否可以不为我的每个角色重复这段代码 --- - name: Include OS specific variables. include_vars: "{{ item }}" with_first_found: - files: - "vars/{{ ansible_os_family }}.yml" skip: True - name: Include distri

在我的大多数角色的开头,有以下代码块。它尝试加载操作系统和特定于版本的变量和任务。我是否可以不为我的每个角色重复这段代码

---

- name: Include OS specific variables.
  include_vars: "{{ item }}"
  with_first_found:
    - files:
      - "vars/{{ ansible_os_family }}.yml"
      skip: True

- name: Include distribution specific variables.
  include_vars: "{{ item }}"
  with_first_found:
    - files:
      - "vars/{{ ansible_distribution }}.yml"
      skip: True

- name: Include version specific variables.
  include_vars: "{{ item }}"
  with_first_found:
    - files:
      - "vars/{{ ansible_distribution }}{{ ansible_distribution_major_version }}.yml"
      skip: True

- name: Run OS specific preparation work.
  include: "{{ item }}"
  with_first_found:
    - files:
      - "tasks/{{ ansible_os_family }}.yml"
      skip: True

- name: Run distribution specific preparation work.
  include: "{{ item }}"
  with_first_found:
    - files:
      - "tasks/{{ ansible_distribution }}.yml"
      skip: True

- name: Run version specific preparation work.
  include: "{{ item }}"
  with_first_found:
    - files:
      - "tasks/{{ ansible_distribution }}{{ ansible_distribution_major_version }}.yml"
      skip: True

是的,您可以使用从外部共享文件中拉入任务。

我主要关心的是,如果使用include或其他角色,查找路径是否正确。如果我使用另一个角色,它如何查看该角色的
vars
目录?您有任何工作示例吗?您是对的,角色只会在传递相对路径时查看相邻目录。但是我猜,如果你选择单独的角色(我建议不管怎样)。您将在该公共角色中拥有所有这些变量/任务。