46 lines
1.6 KiB
YAML
46 lines
1.6 KiB
YAML
---
|
|
# Playbook to provision Komodo stacks from git repository
|
|
# Automatically discovers stacks from docker-compose folder structure
|
|
# Structure: docker-compose/{server}/{app}/compose.yaml
|
|
# Usage: ansible-playbook -i inventories/production.yml playbooks/provision_komodo_stacks.yml
|
|
|
|
- name: Provision Komodo stacks
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: false
|
|
|
|
vars:
|
|
docker_compose_root: "{{ playbook_dir }}/../../docker-compose"
|
|
|
|
tasks:
|
|
- name: Find all compose.yaml files in docker-compose directory
|
|
find:
|
|
paths: "{{ docker_compose_root }}"
|
|
patterns: "compose.yaml"
|
|
recurse: true
|
|
register: compose_files
|
|
|
|
- name: Build stack list from discovered compose files
|
|
set_fact:
|
|
komodo_stacks: "{{ komodo_stacks | default([]) + [{'server': path_parts[0], 'app': path_parts[1]}] }}"
|
|
loop: "{{ compose_files.files }}"
|
|
vars:
|
|
path_parts: "{{ item.path | regex_replace('^.*/docker-compose/', '') | split('/') }}"
|
|
loop_control:
|
|
label: "{{ path_parts[0] }}/{{ path_parts[1] }}"
|
|
|
|
- name: Display discovered stacks
|
|
debug:
|
|
msg: "Found {{ komodo_stacks | length }} stacks: {{ komodo_stacks | map(attribute='app') | list | join(', ') }}"
|
|
|
|
- name: Create Komodo stacks
|
|
include_role:
|
|
name: komodo_stack
|
|
vars:
|
|
komodo_stack_name: "{{ item.app }}"
|
|
komodo_server_name: "{{ item.server }}"
|
|
komodo_run_directory: "docker-compose/{{ item.server }}/{{ item.app }}"
|
|
loop: "{{ komodo_stacks }}"
|
|
loop_control:
|
|
label: "{{ item.app }} (on {{ item.server }})"
|