0

我有角色角色 1,我正在尝试为其创建分子测试,但这个角色依赖于另一个角色角色 2,它位于不同的目录中。作为 docker 容器中运行测试的分子设置的一部分,我有一个 prepare.yml 文件,我试图用它来运行 role-2,以便容器准备好运行 role-1。最初我在同一个位置拥有这两个角色,并且没有这个问题,因为它们位于同一个目录中。但是我需要分离角色的代码以进行版本控制,并且在为测试定位角色 2 时遇到了问题。这种分离仅用于开发和测试,角色一起安装在一个位置进行部署,所以没有问题。

我已经在我的文件任务中尝试了import_role, include_role,并更新了文件中的,以指向具有 role-2 的目录并得到相同的错误:rolesprepare.ymlANSIBLE_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: yesandbecome_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

是否可以做我需要的事情并从另一个位置调用角色?或者有没有更好的方法来做到这一点?

4

1 回答 1

1

你得到错误 -ERROR! the role 'role-2' was not found in查看错误的目录。你看到 dir 和你的角色?我认为你应该试试这个

import_role:
        name: role/role-2
于 2021-11-02T07:02:22.097 回答