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