Ansible-playbook 在错误的目录中搜索角色!如何纠正?
Ansible-playbook search for roles in the wrong directory! How to correct it?
当我运行以下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 在两个位置查找角色:
roles/ # in a directory called relative to the playbook file
/etc/ansible/roles
如果您将角色存储在不同的位置,请设置 roles_path
配置选项以便 Ansible 可以找到您的角色。将共享角色检查到一个位置可以使它们更容易在多个剧本中使用。有关在 ansible.cfg
中管理设置的详细信息,请参阅 Configuring Ansible。
或者,您可以调用具有完全限定路径的角色:
---
- hosts: webservers
roles:
- role: '/path/to/my/roles/common'
您可以在清单文件中设置 role_path
来告诉 ansible 在哪里搜索角色。
在你的情况下,
你应该将你的角色移动到一个名为 roles
的目录中,与剧本处于同一级别。
角色的完整路径或
角色:
- home/peng/git/uavops/deploy/solo/controller/wifi
使用role_path
指向所需位置。
当我运行以下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 在两个位置查找角色:
roles/ # in a directory called relative to the playbook file
/etc/ansible/roles
如果您将角色存储在不同的位置,请设置 roles_path
配置选项以便 Ansible 可以找到您的角色。将共享角色检查到一个位置可以使它们更容易在多个剧本中使用。有关在 ansible.cfg
中管理设置的详细信息,请参阅 Configuring Ansible。
或者,您可以调用具有完全限定路径的角色:
---
- hosts: webservers
roles:
- role: '/path/to/my/roles/common'
您可以在清单文件中设置 role_path
来告诉 ansible 在哪里搜索角色。
在你的情况下,
你应该将你的角色移动到一个名为
roles
的目录中,与剧本处于同一级别。角色的完整路径或
角色: - home/peng/git/uavops/deploy/solo/controller/wifi
使用
role_path
指向所需位置。