я запускаю ansible playbook, но он не находит мои определенные роли. Я получаю следующую ошибку:
ERROR! the role 'Users/xxxx/ansible/roles/basic_install' was not found in /Users/xxxx/ansible/playbooks/roles:/Users/xxxx/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/Users/xxxx/ansible/playbooks
The error appears to be in '/Users/xxxx/ansible/playbooks/byrule.yml': line 6, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
roles:
- role: 'Users/xxxx/ansible/roles/basic_install'
^ here
У меня есть следующая структура:
ansible/
ansible.cfg
inventory
playbooks/
byrule.yml
rules/
basic_install/
tasks/
main.yml
full_install/
tasks/
main.yml
Содержание используемого playbook:
---
- name: Basic install of packages on Debian
hosts: all
become: true
roles:
- basic_install
- name: Full install of packages on Debian
hosts: all
become: true
roles:
- full_install
С наилучшими пожеланиями
Основываясь на выводе ошибки, я попытался указать правило как путь в книге воспроизведения или переместить каталог правил в каталог книг воспроизведения, но ни один из них не сработал, я все еще получаю ту же ошибку. Буду очень благодарен за любую помощь.
Спасибо за ответ. Теперь я вижу, что я напечатал это с ошибкой, кажется, ошибка была где-то еще. Я разместил ответ как решение.
Если вы когда-нибудь предвидите эту ошибку, проблема в том, что playbooks находятся внутри каталога playbooks, и по умолчанию ansible ищет там роли. Правильный способ - держать книги игр на том же уровне, что и каталог ролей.
Как описано в документации ansible
По умолчанию Ansible ищет роли в следующих местах:
- в коллекциях, если вы их используете
- в каталоге с именем roles/ относительно файла playbook
- в настроенном role_path. Путь поиска по умолчанию — ~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles.
- в каталоге, где находится файл playbook
при запуске playbook вам нужно убедиться, что вы находитесь не в каталоге playbooks, а в главном каталоге проекта - в вашем случае ansible
dir
Я запустил ansible-playbook из каталога ansible, но, поскольку playbook находился внутри каталога playbooks, ansible не смог найти роли в каталоге ролей, но продолжал искать их внутри каталога playbooks. Решение состоит в том, чтобы сохранить плейбук на том же уровне, что и каталог ролей.
Ваша папка называется
rules
с буквой u, должно бытьroles
с буквой o