ОШИБКА! роль Users/xxxx/ansible/roles/basic_install' не найдена

я запускаю 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

С наилучшими пожеланиями

Основываясь на выводе ошибки, я попытался указать правило как путь в книге воспроизведения или переместить каталог правил в каталог книг воспроизведения, но ни один из них не сработал, я все еще получаю ту же ошибку. Буду очень благодарен за любую помощь.

Ваша папка называется rules с буквой u, должно быть roles с буквой o

β.εηοιτ.βε 31.03.2023 12:07

Спасибо за ответ. Теперь я вижу, что я напечатал это с ошибкой, кажется, ошибка была где-то еще. Я разместил ответ как решение.

albdev 31.03.2023 15:31
Введение в Ansible Roles
Введение в Ansible Roles
Ansible - это отличный инструмент управления конфигурацией, который можно использовать для автоматизации настройки или развертывания на большом...
2
2
125
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы когда-нибудь предвидите эту ошибку, проблема в том, что 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. Решение состоит в том, чтобы сохранить плейбук на том же уровне, что и каталог ролей.

albdev 03.04.2023 09:34

Другие вопросы по теме