Ansible:如何将include_role与vars配合使用以允许管理非常相似的角色

时间:2020-07-10 08:28:50

标签: ansible

我需要支持为我们的用户安装的同一程序的不同版本,并且想知道如何最好地以可扩展的方式做到这一点而无需大量重复。目前,我们为程序的每个版本创建了一个新角色,因此下面是当前设置的一个最小示例:

-roles/
  -program1.0/
    -files/
      license1.0.lic
      -applications/
        program1.0.desktop
    -tasks/
      main.yml
  -program1.1/
    -files/
      license1.1.lic
      -applications/
        program1.1.desktop
    -tasks/
      main.yml

但是,角色之间的差异很小,并且任务是99%的重复工作,除了一些小的差异:可执行文件的文件名和位置(/opt/program1.X/bin/program1)。桌面文件。 明确地,main.yml的一个最小示例如下:

- name: Install program1.X from self-built rpm
  yum:
    name: program1.X

- name: Copy across license file
  copy:
    src: license1.X.lic
    dest: /foo/bar/

- name: Copy across desktop shortcut
  copy:
    src: applications/program1.X.desktop
    dest: /etc/xdg/applications/

然后我通过以下方式安装这些程序中的一个或多个

- include_role: name=roles/program1.X

这是我的问题:有没有更好,更通用的方法?例如,通过将变量传递给include_role?

我当前正在使用ansible 2.9.1。

0 个答案:

没有答案