.
├── test
│ └── ansible_poc_collection
│ ├── docs
│ ├── galaxy.yml
│ ├── plugins
│ │ └── README.md
│ ├── README.md
│ └── roles
│ └── testrole
│ └── tasks
│ └── main.yml
└── test-play.yml
galaxy.yml
содержит пространство имен и имя:
namespace: test
name: ansible_poc_collection
В test-play.yml
Я импортирую тестролл из коллекции следующим образом :
- hosts: all
collections:
- test.ansible_poc_collection
tasks:
- import_role:
name: testrole
Но выдает ошибку, что роль не может быть найдена:
ERROR! the role 'testrole' was not found in /home/user/tests/ansible-poc-collection/roles:/home/user/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/home/user/tests/ansible-poc-collection
The error appears to be in '/home/user/user/ansible-poc-collection/test-play.yml': line 6, column 15, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- import_role:
name: testrole
^ here
Попытка создать папку верхнего уровня collections
и перемещение коллекции туда, чтобы она находилась в collections/test/ansible_poc_collection
, та же ошибка , Также при ссылке на полное имя с пространством имен / именем коллекции:
- import_role:
name: test.ansible_poc_collection.testrole
Другой нерабочий подход заключался в установке COLLECTIONS_PATHS
так, чтобы он указывал на каталог root моей коллекции (содержащий test
папка пространства имен):
COLLECTIONS_PATHS=/home/user/tests/ansible-poc-collection/collections ansible-playbook -i 127.0.0.1, test-play.yml
Как локально импортировать коллекцию без создания архива и использования Ansible Galaxy?
Используемая версия 2.9.6 (последняя стабильная на момент запись)