Автоматическая установка пользовательских модулей Ansible с помощью Ansible Galaxy - PullRequest
1 голос
/ 24 октября 2019

Есть ли хороший способ использовать Ansible Galaxy для установки и включения пользовательских модулей Ansible (2.7.9)?

Мое требование позволяет Ansible Galaxy загружать правильную роль Ansible, в которую встроен мой пользовательский модуль. Как только ansible-galaxy install --roles-path ansible/roles/ -r roles/requirements.yml, я получаю следующую структуру (не исчерпывающую):

├── ansible
│   ├── roles
│   │   ├── mymodule (being imported by Galaxy)
│   │   │   ├── library
│   │   │   │   └── mymodule.py

При просмотре этой части документации кажется, что мой модуль находится в нужном месте и не требует дополнительной настройки: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html?highlight=library#directory-layout

Но когда я нашел эту часть документации, я запутался. ANSIBLE_LIBRARY связано с пользовательскими модулями?

DEFAULT_MODULE_PATH

Описание: пути, разделенные двоеточиями, в которых Ansible будет искать модули.

Тип: pathspec

По умолчанию: ~ / .ansible / плагины / модули: / usr / share / ansible / плагины / модули

Раздел Ini: значения по умолчанию

Ключ Ini: библиотека

Среда: ANSIBLE_LIBRARY

https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-module-path

При вызове моего модуля

  - name: Test of my Module
    mymodule:

я получаю следующую ошибку:

ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.

Я ожидал, что не нужно настраивать ANSIBLE_LIBRARY, и модуль будет автоматически вызываться. Правильно ли я понимаю, или я тоже должен обмануть этот вар?

1 Ответ

0 голосов
/ 24 октября 2019

Если ваш пользовательский модуль находится в роли, вам нужно включить эту роль в свою пьесу, как минимум:

---
- hosts: myhosts

  roles:
    - role: mymodule

  tasks:
    - name: Test of my Module
      mymodule:
...