我有角色角色 1,我正在尝试为其创建分子测试,但这个角色依赖于另一个角色角色 2,它位于不同的目录中。作为 docker 容器中运行测试的分子设置的一部分,我有一个 prepare.yml 文件,我试图用它来运行 role-2,以便容器准备好运行 role-1。最初我在同一个位置拥有这两个角色,并且没有这个问题,因为它们位于同一个目录中。但是我需要分离角色的代码以进行版本控制,并且在为测试定位角色 2 时遇到了问题。这种分离仅用于开发和测试,角色一起安装在一个位置进行部署,所以没有问题。
我已经在我的文件任务中尝试了import_role
, include_role
,并更新了文件中的,以指向具有 role-2 的目录并得到相同的错误:roles
prepare.yml
ANSIBLE_ROLES_PATH:
molecule.yml
ERROR! the role 'role-2' was not found in ...
它列出了一堆目录,包括由 ANSIBLE_ROLES_PATH 值设置的目录,并指向我的prepare.yml
文件中带有 task的行name: role-2
。我曾认为这可能是权限问题,但使用import_role
我可以使用become: yes
andbecome_user: correct_user
来但得到相同的错误。
我的 prepare.yml 文件看起来像这样
- name: Prepare
hosts: all
vars:
pkg_list:
- package-1
- package-2
tasks:
- name: Install packages
become: yes
package:
name: "{{ pkg_list }}"
state: present
- name: Install role-2
become: yes
become_user: correct-user
import_role:
name: role-2
是否可以做我需要的事情并从另一个位置调用角色?或者有没有更好的方法来做到这一点?