【问题标题】:Ansible-playbook search for roles in the wrong directory! How to correct it?Ansible-playbook 搜索错误目录中的角色!如何纠正?
【发布时间】:2021-07-31 08:15:43
【问题描述】:

当我运行以下 ansible 命令时:

$ ansible-playbook deploy/solo/wifi.yml -i inventories/solo

我收到以下错误消息:

ERROR! the role 'solo/controller/wifi' was not found in /home/peng/git/uavops/deploy/roles:/home/peng/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/home/peng/git/uavops/deploy

The error appears to be in '/home/peng/git/uavops/deploy/wifi.yml': line 5, column 7, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

  roles:
    - solo/controller/wifi
      ^ here

这是怎么发生的?我在工作目录/home/peng/git/uavops 下调用ansible-playbook。然而 ansible-playbook 忽略它并尝试在目录 /home/peng/git/uavops/deploy 中找到角色。

我如何告诉 ansible 找到正确的角色目录?

【问题讨论】:

    标签: ansible ansible-role


    【解决方案1】:

    默认情况下,Ansible 在两个位置查找角色:

     roles/ #   in a directory called relative to the playbook file
    
    /etc/ansible/roles
    

    如果您将角色存储在其他位置,请设置 roles_path 配置选项,以便 Ansible 可以找到您的角色。将共享角色签入单个位置使它们更易于在多个剧本中使用。有关在 ansible.cfg 中管理设置的详细信息,请参阅 ConfiguringAnsible。

    或者,您可以调用具有完全限定路径的角色:

    ---
    - hosts: webservers
      roles:
        - role: '/path/to/my/roles/common'
    

    您可以在您的库存文件中设置role_path 来告诉 ansible 在哪里搜索角色。

    在你的情况下,

    1. 您应该将您的角色移动到一个名为 roles 的目录中,该目录与 playbook 处于同一级别。

    2. 角色的完整路径或

      角色: - home/peng/git/uavops/deploy/solo/controller/wifi

    3. 使用role_path 指向所需位置。

    【讨论】:

    • 所以和工作目录无关……听起来真的很难整理
    • 我通常将所有角色保存在一个目录中,并将指向该目录的软链接保存在所有 playbook 目录中。这使事情变得非常简单和有条理
    猜你喜欢
    • 2022-07-19
    • 2019-03-30
    • 2019-11-20
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    相关资源
    最近更新 更多