如何将本地角色与从ansible-galaxy加载的角色分开?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将本地角色与从ansible-galaxy加载的角色分开?相关的知识,希望对你有一定的参考价值。

我观察到从galaxy下载的角色安装在roles/目录中,我们已经拥有内部的角色,很难在外部和内部之间进行区分。

有没有办法将它们保存在不同的目录中,这样我们可以避免混淆?

在大多数情况下,我希望有一个更新星系的脚本,我们不会在内部修改它们。

答案

我认为没有标准的方法可以做到这一点,但你可以使用Ansible行为。

Ansible在两个位置搜索角色:

  • 在相对于你的剧本的roles目录中
  • 您在ansible.cfg中配置的路径

您现在需要做的事情取决于您实际存储角色的位置。我们正在存储相对于我们的剧本的角色,所以一切都在同一个git repo中。

现在你可以define in your ansible.cfg在另一个文件夹中查找角色:

roles_path=./galaxy_roles

ansible-galaxy默认将角色安装到roles_path的第一个找到的路径中,因此如果你有多个角色路径,请确保首先添加galaxy文件夹。您无需显式添加roles文件夹。默认情况下,Ansible将始终在./roles文件夹中搜索相对于剧本的角色。

或者,您也可以指示galaxy安装到其他位置:

ansible-galaxy install --roles-path=./galaxy_roles foo
另一答案

如果您的内部/自定义角色并不总是与剧本相关,那么@udonhan继承答案可能还不够,我的意思是全局角色。

您可以在ansible.cfg文件中管理多个角色路径,因此您可以在项目路径中定义ansible.cfg文件:

[defaults]
roles_path    = ./roles:./roles_internal

“./roles”路径可用于ansible-galaxy角色,“。/ roles_internal”可用于内部/自定义角色

现在当你执行

ansible-galaxy install -r requeriments.yml

默认情况下,Galaxy角色安装在“./roles”中

注意:您必须确保未设置ANSIBLE_ROLES_PATH env变量,否则它将覆盖ansible.cfg设置。用于检测:

unset ANSIBLE_ROLES_PATH

以上是关于如何将本地角色与从ansible-galaxy加载的角色分开?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIImage(contentsOfFile:String) 与从 Internet 下载的图像数据一起使用?

从 NIB 与从代码加载自定义滑块:从代码加载时不存在子视图

我可以在与从该端口加载的脚本文件不同的端口上使用 XMLHttpRequest 吗?

从函数返回“本地”字符*与从函数返回“本地”int*之间的区别[重复]

如何将 JSON 数据与从 websocket 接收的 ArrayBuffer 分离

Spring LdapAuthentication 和从本地数据库加载角色