When developing an Ansible collection, you must organize your custom logic within a plugins directory. Each plugin type must reside in a subdirectory named after its specific type. For standard collection development, you will typically use module_utils for shared Python utilities and modules for the actual Ansible modules.
Commonly supported plugin directories include:
action: Action pluginsbecome: Become pluginscache: Cache pluginscallback: Callback pluginscliconf: CLI configuration pluginsconnection: Connection pluginsfilter: Filter pluginshttpapi: HTTP API pluginsinventory: Inventory pluginslookup: Lookup pluginsmodule_utils: Shared module utilitiesmodules: Ansible modulesnetconf: NETCONF pluginsshell: Shell pluginsstrategy: Strategy pluginsterminal: Terminal pluginstest: Test pluginsvars: Variable plugins
└── plugins
├── action
├── become
├── cache
├── callback
├── cliconf
├── connection
├── filter
├── httpapi
├── inventory
├── lookup
├── module_utils
├── modules
├── netconf
├── shell
├── strategy
├── terminal
├── test
└── vars