Edited at

自作Ansibleモジュールをライブラリ化するときのディレクトリ構成

More than 5 years have passed since last update.

Best Practices — Ansible Documentationによると、Ansibleモジュールを自作した場合、./library/以下に置けば自動でロードされる様です。しかし、自動でロードされるのは一階層下までとなります。

./library/

├── my_module # ロードされる
└── hoge/
├── my_module # ロードされる
└── fuga/
└── my_module # ロードされない

つまり、自作モジュールをライブラリ化するときは、以下のようなディレクトリ構成にするとよさそうです。

my_ansible_modules/

├── README.md
├── LICENSE
├── module1
├── module2
└── test/
├── units/
└── integration/
   ├── inventory.ini
   ├── library -> ../../ # プロジェクトルートへのシンボリックリンク
   ├── roles/
   │   ├── test_module1/
   │   │   └── tasks/
   │   │   └── main.yml
   │   └── test_module2/
   │   └── tasks/
   │   └── main.yml
   └── site.yml

こうしておけば、使用する側は外部ライブラリを./library/以下に置くだけで利用できます。

./

├── library/
│ └── my_ansible_modules/
├── inventory.ini
└── site.yml


site.yml

---

- hosts: all
tasks:
- module1: option1=value1 option2=value2
- module2: option3=value3 option4=value4