管理许多项目的Ansible角色

时间:2018-09-10 16:12:45

标签: ansible ansible-role

说明

Ansible content organization documentation仅讨论具有多个暂存环境的单个项目。

那太好了,但我需要管理许多将重用许多相同的Ansible角色的项目。我应该建立一个单一的角色目录,并将所有项目特定的剧本指向“共享的”角色目录。或者,每个项目都应具有专用的角色目录,该目录仅包含与项目相关的角色。以下是我为两者考虑的利弊:

共享角色目录

优点:

  • 所有角色都在一个位置。
  • 对于在多个项目中共享的角色,角色版本升级将应用于依赖于该角色的所有项目。

缺点:

  • 对于在多个项目中共享的角色,即使不是您正在处理的项目,也需要在每个项目中测试角色版本更改。

专用角色目录

优点:

  • 很明显,运行特定项目需要哪些角色。
  • 角色版本升级可以应用于需要升级的特定项目。

缺点:

  • 常用角色已多次复制/克隆。但是,将ansible-galaxyrequirements.yml文件一起使用将为我们处理角色和角色依赖性的管理。

问题

有人能成功使用这两种组织策略吗?

2 个答案:

答案 0 :(得分:1)

您已经在分析方面做得很好,概述了做出决定的大部分要素。

允许我添加更多注意事项。

总的来说,正确的答案与ansible无关,而与组织脚本和角色的开发方式有关。特别是在……不同项目和不同角色发生变化时。

在所有事物都与其他事物断开连接的环境中,您可能想要使用类似于ansible-galaxy的环境(但要使用自己的本地存储库)。在这种情况下,您将独立开发项目的剧本,并且它们将重复使用项目requirements.yml中定义的角色。可以将角色的更改发布到您的私有银河中并进行版本控制,以便其他项目可以决定升级或保留其当前版本。可以从一个或不同的存储库中提取角色,但是对于每个项目,使用galaxy命令仅提取所需的角色。

在另一种极端情况下,如果您环境中的所有项目都同步发展,那么集中的方法将可以更好地工作,因为您的移动部件更少。一切(不同项目的所有角色和剧本)都可以存储在单个存储库中。

答案 1 :(得分:-1)

在我以前的工作场所中,我们为每种微服务实现了不同的剧本。大约有30项服务正在生产中,另有15项正在开发中。更新和管理.yml文件并不是什么大问题,因为yaml文件通常简短易读。

我会说这可能取决于您使用的服务,环境以及开发人员的数量!