Ansible 在存储库之间共享角色

标签 ansible yaml ansible-role

我们有 3 个存储库,比如说存储库 Y、Z 和 W。

存储库 W 下有存储库 Y 和 Z 想要使用的角色。

Share role in repository diagram

根据阅读,我们似乎需要如下设置requirements.yml,

- src: git@github.com:SOMEREPOSITORY/test-role.git
  version: main
  name: test_role

但是,我们仍然没有成功使用共享角色,

ERROR! the role 'test_role' was not found in /home/coder/provision/Build/roles:/home/coder/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/home/coder/provision/Build

是否需要在我们遗漏的 ansible.cfg 文件中进行配置?

最佳答案

几天后我找到了解决方案。

不使用 Ansible Tower。
解决方案是当我们不使用 Ansible Tower 时,我们可以使用以下步骤从另一个存储库安装角色,

  1. 在您的 ./roles 文件夹下创建 requirements.yml 文件 requirements.yml 例子的内容:-

    ---
    - src: git@github.com:SOMEREPOSITORY/testing-repository.git
    名称:测试角色
    单片机:git

  2. 然后,运行下面的命令从另一个存储库安装角色,在执行下面的命令之前确保你在与角色目录相同级别的目录中:-

ansible-galaxy install --role-file roles/requirements.yml --roles-path roles/

使用 Ansible Tower。

  1. 在./roles 文件夹下创建与上述内容示例相同的requirements.yml 文件。
  2. 确保您的 ./roles 文件夹是存储库的一级目录。 例如:-

Let say the Git repository name is Test_Repository, then ./roles directory should be inside the 'Test_Repository' folder. Since the playbook structure is essential for Ansible Tower to find the requirements.yml.

  1. 然后,只需从 Ansible Tower 获取您的剧本,Project Sync 就会自动从 requirements.yml 内容中找到角色并使用它。 无需在 Ansible Tower 中配置额外的任务,因为它是自动的。

希望这对其他人有帮助。

关于Ansible 在存储库之间共享角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68159022/

相关文章:

Ansible:仅对某些主机执行角色

ansible - Ansible 中的角色和任务(和标签)有什么区别?

Ansible 在其处理程序中未检测到角色默认变量

kubernetes - 在列表项前面添加字符串并在 Ansible 中将其转换为 JSON

ansible - 最后修改的文件只移动了ansible?

loops - 在 block 模块上为 Ansible 中的一组任务发出循环

amazon-ec2 - ansible-playbook 等待 ssh 超时并出现 ping 错误,但可以在本地工作

windows - Ansible win_shell 临时语法

java - 如何将嵌套 yaml 结构映射到 Java ConfigurationProvider Builder?

kubernetes - 在 YAML 中对 Kubernetes 服务设置注释的正确方法是什么