Initial commit
This commit is contained in:
53
README.md
Normal file
53
README.md
Normal 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
3
defaults/main.yml
Normal 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
7
handlers/main.yml
Normal 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
|
||||||
2
meta/.galaxy_install_info
Normal file
2
meta/.galaxy_install_info
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
install_date: Wed Aug 13 15:14:56 2025
|
||||||
|
version: ''
|
||||||
3
meta/main.yml
Normal file
3
meta/main.yml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# This file is required by `ansible-galalxy install'.
|
||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
28
tasks/docker_compose.yml
Normal file
28
tasks/docker_compose.yml
Normal 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
6
tasks/main.yml
Normal 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
|
||||||
1
templates/docker-compose.yml
Normal file
1
templates/docker-compose.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{ docker_compose_definition | to_nice_yaml(indent=2) }}
|
||||||
1
templates/dotenv
Normal file
1
templates/dotenv
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{{ docker_compose_dotenv }}
|
||||||
Reference in New Issue
Block a user