Ansible的集成级别:角色和剧本之间

Ansible的集成级别:角色和剧本之间,ansible,dependencies,Ansible,Dependencies,我正在试图找到以下问题的解决方案: 我们有一些剧本级别的代码(许多角色,运行在不同的主机上),我们希望在项目之间重用这些代码 我找不到一种思路清晰(无缝/良好/等)的方法将他人的剧本整合到我的剧本中 整合的关键点: playbook和它的角色销售,以及适当的依赖关系管理 能够清楚地看到和命名出售的物品 更新供应商依赖项的能力 内部隔离(我不想触发一些意外的处理程序和/或set\u-factsomeone的变量来隐藏它们的值) 另外一个问题是如何在git中处理这个问题(如果存在git级集成)

我正在试图找到以下问题的解决方案:
我们有一些剧本级别的代码(许多角色,运行在不同的主机上),我们希望在项目之间重用这些代码

我找不到一种思路清晰(无缝/良好/等)的方法将他人的剧本整合到我的剧本中

整合的关键点:

  • playbook和它的角色销售,以及适当的依赖关系管理
  • 能够清楚地看到和命名出售的物品
  • 更新供应商依赖项的能力
  • 内部隔离(我不想触发一些意外的处理程序和/或
    set\u-fact
    someone的变量来隐藏它们的值)
另外一个问题是如何在git中处理这个问题(如果存在git级集成)

这种集成是否有一些最佳实践?它们存在吗


(到目前为止,我决定使用git供应商,但我希望有更好的方法)。

我理解您描述的想法背后的动机,但我认为您心目中的解决方案可能与Ansible的设计方式不符。 我将解释我的观点,并尝试在整个过程中解决您的关键点

Ansible强调角色级抽象。在依赖关系管理方面,有一个命令,它与Ansible捆绑在一起。 也可以是。
ansible galaxy安装git+https://github.com/my-repo/my-ansible-role

文档中还有一些示例说明如何设置需求文件,以安装一组(自定义)依赖项。
这至少应满足您关于“供应商”的技术要求

也就是说,您特别提到了“剧本级代码”。 这意味着您还希望共享资源清册,因为剧本基本上是主机到角色的映射。
(如果您的剧本不仅仅是一系列角色,或者包括其他剧本,那么您可能需要考虑将更多的剧本重构为角色,见上文。)

就Ansible的设计和理念而言,它不强调分享剧本,因为剧本一开始就应该相当简单,没有清单也毫无意义。 首先,库存可能在您的组织中共享,即只有一个“版本”

根据我的经验,当所有内容都在一个目录中时,Ansible工作得最好,即库存、已安装的角色、剧本等。 保持简单,在共享方面,尝试介绍其他项目的成员使用该信息源

如果在安全或团队政策方面考虑,请考虑使用或类似的共享秘密。

为了解决共享变量的问题,可以考虑在不同的机器上使用不同的脚本调用中的一个缓存事实。 通过这种方式,您的角色可以引用“来自您的环境”的变量,而不是来自运行playbook的机器的状态


最后但并非最不重要的是,Ansible解决这个问题的方法是他们实际的商业产品,一个运行Ansible playbooks的用户界面和API,其核心是一个名为

我理解您描述的想法背后的动机,但我认为您心目中的解决方案可能与Ansible的设计方式不符。 我将解释我的观点,并尝试在整个过程中解决您的关键点

Ansible强调角色级抽象。在依赖关系管理方面,有一个命令,它与Ansible捆绑在一起。 也可以是。
ansible galaxy安装git+https://github.com/my-repo/my-ansible-role

文档中还有一些示例说明如何设置需求文件,以安装一组(自定义)依赖项。
这至少应满足您关于“供应商”的技术要求

也就是说,您特别提到了“剧本级代码”。 这意味着您还希望共享资源清册,因为剧本基本上是主机到角色的映射。
(如果您的剧本不仅仅是一系列角色,或者包括其他剧本,那么您可能需要考虑将更多的剧本重构为角色,见上文。)

就Ansible的设计和理念而言,它不强调分享剧本,因为剧本一开始就应该相当简单,没有清单也毫无意义。 首先,库存可能在您的组织中共享,即只有一个“版本”

根据我的经验,当所有内容都在一个目录中时,Ansible工作得最好,即库存、已安装的角色、剧本等。 保持简单,在共享方面,尝试介绍其他项目的成员使用该信息源

如果在安全或团队政策方面考虑,请考虑使用或类似的共享秘密。

为了解决共享变量的问题,可以考虑在不同的机器上使用不同的脚本调用中的一个缓存事实。 通过这种方式,您的角色可以引用“来自您的环境”的变量,而不是来自运行playbook的机器的状态


最后但并非最不重要的是,Ansible解决这个问题的方法是他们实际的商业产品,一个运行Ansible playbooks的用户界面和API,其核心是一个名为

角色间集成的关键点不仅是“主机/角色”级别,还包括共享变量。如果我在服务器上配置foo-server和bar-on-bar-server,我希望它们对foobar使用相同的设置。角色不允许这样做。此外,业界对剧本的需求很大:ceph ansible、kubespray、openshift——它们都提供剧本,因为不可能只通过角色来实现。增加了另一段关于事实缓存的内容。我想说的是