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