mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-13 14:16:46 +00:00
52 lines
1.5 KiB
Markdown
52 lines
1.5 KiB
Markdown
# Custom Modules (`library/`)
|
|
|
|
This directory contains project-specific Ansible modules used by Infinito.Nexus.
|
|
|
|
## What Belongs Here
|
|
|
|
Use `library/` for idempotent module logic that represents concrete automation actions.
|
|
|
|
Typical cases:
|
|
- managing resources that have no suitable built-in/community module,
|
|
- wrapping internal APIs or internal infrastructure semantics,
|
|
- implementing reusable module interfaces for role/playbook consumption.
|
|
|
|
## What Does Not Belong Here
|
|
|
|
- Shared helper code used by multiple modules/plugins goes to `utils/`.
|
|
- Jinja transformations belong to `plugins/filter/`.
|
|
- Runtime value retrieval belongs to `plugins/lookup/`.
|
|
- Task execution wrappers belong to `plugins/action/`.
|
|
|
|
## Usage
|
|
|
|
Ansible searches `library/` for custom modules. In playbooks, call them like built-in modules.
|
|
|
|
```yaml
|
|
- name: Run a custom Infinito module
|
|
infinito_custom_module:
|
|
option_one: value
|
|
option_two: value
|
|
```
|
|
|
|
## Implementation Notes
|
|
|
|
- Keep modules idempotent and predictable.
|
|
- Validate input early and return structured failure messages.
|
|
- Move duplicated helpers into `utils/`.
|
|
|
|
### Shebang Requirement for Custom Modules
|
|
|
|
Files in `library/` should use:
|
|
|
|
```python
|
|
#!/usr/bin/python
|
|
```
|
|
|
|
Ansible rewrites this interpreter path to the configured host interpreter for module execution.
|
|
|
|
## References
|
|
|
|
- Developing modules: <https://docs.ansible.com/ansible/latest/dev_guide/developing_modules.html>
|
|
- Module utilities: <https://docs.ansible.com/ansible/latest/dev_guide/developing_module_utilities.html>
|