feat: Auto deploy stacks on komodo (no storage yet)
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
---
|
||||
# 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 }})"
|
||||
Reference in New Issue
Block a user