我有我的目录结构设置,使得playbooks目录在 /var/lib/awx/projects/ 下,而角色是playbooks下的符号链接 .
/var/lib/awx/projects/
我需要角色的符号链接,因为我正在使用本地系统的git push将 playbooks/roles 推送到Tower,并且剧本和角色都在不同的git仓库中 .
playbooks/roles
当我试图在Tower工作时,它抱怨它无法找到我的角色 . 当我看到ansible指出它所查看的每条路径时,它们就在那里 .
任何想法为什么我的角色找不到?
如果符号链接确实是问题(我无法分辨)那么git submodules可能是你的解决方案 . 您可以将"roles"存储库作为子模块添加到剧本所在的存储库中 . 您需要克隆父存储库然后递归:
git clone --recursive playbooks
要知道子模块可能是一个巨大的PITA,但是如果你需要在单独的存储库中使用playbooks和角色,并且符号链接确实没有塔,那么这可能是一个解决方案 .
另一种解决方案是为每个角色创建一个单独的git存储库 . 然后,您可以通过ansible-galaxy单独安装每个角色 . 为此你需要 requirements.yml ,你的所有角色定义如下:
requirements.yml
- src: https://gitsource.host/user/some_role version: master name: some_role
Ansible Tower会自动安装所有列出的角色,如here所述 .
1 回答
如果符号链接确实是问题(我无法分辨)那么git submodules可能是你的解决方案 . 您可以将"roles"存储库作为子模块添加到剧本所在的存储库中 . 您需要克隆父存储库然后递归:
要知道子模块可能是一个巨大的PITA,但是如果你需要在单独的存储库中使用playbooks和角色,并且符号链接确实没有塔,那么这可能是一个解决方案 .
另一种解决方案是为每个角色创建一个单独的git存储库 . 然后,您可以通过ansible-galaxy单独安装每个角色 . 为此你需要
requirements.yml
,你的所有角色定义如下:Ansible Tower会自动安装所有列出的角色,如here所述 .