使用Ansible Galaxy自动安装Ansible自定义模块

时间:2019-10-24 15:12:21

标签: ansible ansible-galaxy

有什么好方法可以使用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 / plugins / modules:/ usr / share / ansible / plugins / modules

     

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 :(得分:0)

如果您的自定义模块属于角色,则需要将该角色包括在剧本中,因此至少:

---
- hosts: myhosts

  roles:
    - role: mymodule

  tasks:
    - name: Test of my Module
      mymodule: