Initial commit

This commit is contained in:
n.simonov
2026-01-26 22:26:08 +04:00
commit f4f8606faa
9 changed files with 104 additions and 0 deletions

53
README.md Normal file
View File

@@ -0,0 +1,53 @@
<img src="/logos/docker_compose.png" alt="docker_compose logo" width="100" height="100">
# Docker Compose role
Deploy Docker Compose project.
## Usage
Configure the role.
```yml
docker_compose_project_name: project01
docker_compose_data_dir: /srv/compose/compose01 # default: "/srv/compose/{{ docker_compose_project_name }}"
docker_compose_volumes:
- name: postgresql-vol
docker_compose_backup_set: # See restic_backup_set var in role restic
docker_compose_dotenv: |
POSTGRES_PASSWORD=postgres
docker_compose_definition:
services:
db:
image: postgres
volumes:
- ./data/db:/var/lib/postgresql/data
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
web:
image: django
command: python -m http.server
ports:
- "8000:8000"
environment:
- POSTGRES_NAME=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=$POSTGRES_PASSWORD
depends_on:
- db
```
And include it in your playbook.
```yml
- hosts: docker_compose
roles:
- role: docker_compose
```
The following tags are available:
* docker_compose
* docker_compose_backup

3
defaults/main.yml Normal file
View File

@@ -0,0 +1,3 @@
---
docker_compose_data_dir: /srv/compose/{{ docker_compose_project_name }}
docker_compose_version: 2.24.1

7
handlers/main.yml Normal file
View File

@@ -0,0 +1,7 @@
---
- name: Restart {{ role_name }} project
ansible.builtin.command: docker compose -p {{ docker_compose_project_name }} restart
args:
chdir: "{{ docker_compose_data_dir }}"
changed_when: true
when: docker_compose_definition is defined

View File

@@ -0,0 +1,2 @@
install_date: Wed Aug 13 15:14:56 2025
version: ''

3
meta/main.yml Normal file
View File

@@ -0,0 +1,3 @@
# This file is required by `ansible-galalxy install'.
---
galaxy_info:

28
tasks/docker_compose.yml Normal file
View File

@@ -0,0 +1,28 @@
---
- name: Ensure {{ role_name }} data dir exists
ansible.builtin.file:
path: "{{ docker_compose_data_dir }}"
state: directory
group: "{{ docker_group }}"
mode: "0770"
- name: Copy {{ role_name }} dotenv
ansible.builtin.template:
src: dotenv
dest: "{{ docker_compose_data_dir }}/.env"
notify: Restart {{ role_name }} project
- name: Copy {{ role_name }} config
ansible.builtin.template:
src: docker-compose.yml
dest: "{{ docker_compose_data_dir }}/docker-compose.yml"
notify: Restart {{ role_name }} project
when: docker_compose_definition is defined
- name: Start {{ role_name }} project
ansible.builtin.command: docker compose -p {{ docker_compose_project_name }} up -d
args:
chdir: "{{ docker_compose_data_dir }}"
register: result
changed_when: "'up-to-date' not in result.stderr"
when: docker_compose_definition is defined

6
tasks/main.yml Normal file
View File

@@ -0,0 +1,6 @@
---
- name: Include {{ role_name }} tasks
ansible.builtin.include_tasks: "{{ role_name }}.yml"
when: docker_compose_project_name is defined
tags:
- docker_compose

View File

@@ -0,0 +1 @@
{{ docker_compose_definition | to_nice_yaml(indent=2) }}

1
templates/dotenv Normal file
View File

@@ -0,0 +1 @@
{{ docker_compose_dotenv }}