2.6 KiB
2.6 KiB
Komodo Stack Role
This role automates the creation of stacks in Komodo via its REST API.
Quick Start
The included provision_komodo_stacks.yml playbook automatically discovers all stacks from your docker-compose/ folder structure and creates them in Komodo:
ansible-playbook -i inventories/production.yml playbooks/provision_komodo_stacks.yml
This will scan for all compose.yaml files in the structure: docker-compose/{server}/{app}/compose.yaml and create corresponding stacks in Komodo.
Requirements
- A running Komodo instance with API access
- Valid Komodo API token stored in
vault_komodo_api_token - Existing server and repository configured in Komodo
Role Variables
Required Variables
komodo_stack_name: Name for the stack (typically the app name, e.g., "changedetection")komodo_server_name: Name of the server in Komodo where the stack should deploykomodo_repo_name: Name of the repository in Komodo containing the stack definitionkomodo_run_directory: Path within the repository to the compose.yaml file (e.g.,docker-compose/apps-1/changedetection)
Optional Variables
komodo_host: Komodo instance URL (default:https://komodo.{{ domain }})komodo_api_token: API token for authentication (default:{{ vault_komodo_api_token }})
Example Usage
Automatic Discovery (Recommended)
Use the provided playbook to automatically discover and create all stacks from your repository:
ansible-playbook -i inventories/production.yml playbooks/provision_komodo_stacks.yml
This scans the docker-compose/ directory and creates stacks for each app found in the structure:
docker-compose/{server}/{app}/compose.yaml
Example structure:
docker-compose/
apps-1/
changedetection/
compose.yaml
turn/
compose.yaml
media-1/
arr/
compose.yaml
How It Works
- Validates all required variables are provided
- Fetches list of servers from Komodo API and finds the server ID by name
- Fetches list of repositories from Komodo API and finds the repo ID by name
- Checks if a stack with the same name already exists
- Creates the stack if it doesn't exist (skips if it does)
API Token Setup
Store your Komodo API token in an Ansible vault file:
# inventories/group_vars/all/vault.yml
vault_komodo_api_token: 'your-api-token-here'
Generate an API token in Komodo: Settings → API Keys → Create New Token
Notes
- The role is idempotent - it won't create duplicate stacks
- Server and repo must already exist in Komodo before running this role
- Uses retry logic for API calls to handle temporary network issues