Configuration 在ansible中使用一组通用角色作为多个剧本的基础是明智的吗?

Configuration 在ansible中使用一组通用角色作为多个剧本的基础是明智的吗?,configuration,ansible,virtual-machine,Configuration,Ansible,Virtual Machine,我使用ansible管理范围广泛的虚拟机,所有虚拟机都有自己的具体情况,但每个虚拟机都有一些通常在其下定义的角色 例如,多个剧本引用一个角色,该角色设置具有访问权限的管理员用户,ssh设置、timesync、时区等也是如此 现在,这些角色在这些剧本中以相同的方式显式引用,如果角色发生变化,则很难维护这些角色 我尝试了两种方法: Include playbook:虽然可以为一个清单文件运行一个包含的playbook,该清单文件将覆盖所有需要的vm,但它仍然有一个单独的配置集,我会尽量避免对包含的p

我使用ansible管理范围广泛的虚拟机,所有虚拟机都有自己的具体情况,但每个虚拟机都有一些通常在其下定义的角色

例如,多个剧本引用一个角色,该角色设置具有访问权限的管理员用户,ssh设置、timesync、时区等也是如此

现在,这些角色在这些剧本中以相同的方式显式引用,如果角色发生变化,则很难维护这些角色

我尝试了两种方法:

Include playbook:虽然可以为一个清单文件运行一个包含的playbook,该清单文件将覆盖所有需要的vm,但它仍然有一个单独的配置集,我会尽量避免对包含的playbook进行可能的错误配置 包含角色的主角色:我通过传递变量使此方法工作,但是设置起来有点困难,更不用说,因为变量流的可维护性和可跟踪性违背了易用性的目的。
如果有经验更丰富的人,是否有一种建议的方法将常用角色分组在一起,同时在需要时仍然可以选择单独使用?

我不想说我更有经验,但我确实有一种方法“让它为我工作”,我也在苦苦思索这个问题,这是最好的还是至少是一种好的方式

我的主机分为多个组,每个组都有自己的一组主机 组变量中的变量。 我有一个单一的剧本为每个顶级 组服务器和客户端。 这些角色是根据 功能Web服务器或gnome桌面。 每当一个角色被多个主机或组使用时,我都使用基于 清单\u主机名、组或自定义变量。这确实会产生 有些重复,但可以通过有条件地保持最小 导入任务。
老实说:我还没到那里,但从现在开始的几个周末我希望能到达那里:-.

为什么有这么多剧本?我只有一个:run_roles.yml。可以传入将要运行的角色列表。我们已经为我们使用的所有不同类型的VM定义了多个palybook。例如,内部数据库、服务器、开发人员机器、具有特定功能的现场机器等。。。它们都是分开的,保持基本的最低要求,最大限度地减少不必要的程序。我说,你不需要那么多剧本,只需要一本运行通过额外变量传递的角色的剧本。如果您使用的是Ansible Tower,则每个作业都会包装一个剧本。您只是有不同的作业都运行run_roles playbook,额外的_变量告诉它要运行哪个角色。然后,您可以在工作流中将这些作业串在一起。