Skip to content

Commit dd8fdba

Browse files
committed
Add roles within the playbook
1 parent db56cf0 commit dd8fdba

4 files changed

Lines changed: 179 additions & 0 deletions

File tree

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
---
2+
- name: Install Docker
3+
hosts: tag_Role_docker_server
4+
become: yes
5+
become_user: root
6+
tasks:
7+
- roles:
8+
- install_docker
9+
10+
- name: Install docker compose
11+
hosts: tag_Role_docker_server
12+
become: yes
13+
become_user: kithupag
14+
tasks:
15+
- name: Create docker compose directory
16+
file:
17+
path: ~/.docker/cli-plugins
18+
state: directory
19+
20+
- name: Get architecture
21+
shell: uname -m
22+
register: architecture
23+
24+
- name: Download docker compose
25+
get_url:
26+
url: https://github.com/docker/compose/releases/latest/download/docker-compose-linux-{{ architecture.stdout }}
27+
dest: ~/.docker/cli-plugins/docker-compose
28+
mode: +x
29+
30+
- name: Start docker
31+
hosts: tag_Role_docker_server
32+
become: yes
33+
become_user: root
34+
tasks:
35+
- name: Ensure docker is running
36+
systemd:
37+
name: docker
38+
state: started
39+
enabled: yes
40+
41+
- name: Add kithupag to docker group
42+
user:
43+
name: kithupag
44+
groups: docker
45+
append: yes
46+
47+
- name: Deploy application
48+
hosts: tag_Role_docker_server
49+
become: yes
50+
become_user: kithupag
51+
vars:
52+
image_tag: "{{ image_tag | default('latest') }}"
53+
dockerhub_username: "{{ dockerhub_username }}"
54+
app_dir: ~/task-manager
55+
tasks:
56+
- name: Create app directory
57+
file:
58+
path: "{{ app_dir }}"
59+
state: directory
60+
61+
- name: Write docker-compose file
62+
copy:
63+
dest: "{{ app_dir }}/docker-compose.yaml"
64+
content: |
65+
version: "3.8"
66+
services:
67+
client:
68+
image: {{ dockerhub_username }}/task-manager-client:{{ image_tag }}
69+
ports:
70+
- "80:80"
71+
restart: unless-stopped
72+
depends_on:
73+
- server
74+
75+
server:
76+
image: {{ dockerhub_username }}/task-manager-server:{{ image_tag }}
77+
ports:
78+
- "3000:3000"
79+
restart: unless-stopped
80+
env_file:
81+
- .env
82+
83+
- name: Copy .env file to app directory
84+
copy:
85+
src: .env
86+
dest: "{{ app_dir }}/.env"
87+
mode: '0600'
88+
ignore_errors: yes # skip if no .env exists locally
89+
90+
- name: Pull latest images
91+
shell: docker compose pull
92+
args:
93+
chdir: "{{ app_dir }}"
94+
95+
- name: Stop existing containers
96+
shell: docker compose down --remove-orphans
97+
args:
98+
chdir: "{{ app_dir }}"
99+
ignore_errors: yes
100+
101+
- roles:
102+
- start_containers
103+
104+
- name: Verify containers are running
105+
shell: docker compose ps
106+
args:
107+
chdir: "{{ app_dir }}"
108+
register: compose_status
109+
110+
- name: Print container status
111+
debug:
112+
msg: "{{ compose_status.stdout }}"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
- name: Make sure docker is installed
2+
yum:
3+
name: docker
4+
state: present
5+
update_cache: yes
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
services:
2+
db:
3+
image: postgres:16-alpine
4+
container_name: todo-db
5+
restart: always
6+
environment:
7+
POSTGRES_USER: postgres
8+
POSTGRES_PASSWORD: PASSWORD
9+
POSTGRES_DB: todo_db
10+
volumes:
11+
- db-data:/var/lib/postgresql/data
12+
- ./database.sql:/docker-entrypoint-initdb.d/init.sql
13+
ports:
14+
- "5432:5432"
15+
healthcheck:
16+
test: ["CMD", "pg_isready", "-U", "postgres"]
17+
interval: 10s
18+
timeout: 10s
19+
retries: 3
20+
start_period: 10s
21+
22+
backend:
23+
image: kithupag/server:latest
24+
container_name: todo-backend
25+
restart: always
26+
depends_on:
27+
db:
28+
condition: service_healthy
29+
environment:
30+
DB_HOST: db
31+
DB_USER: postgres
32+
DB_PASSWORD: PASSWORD
33+
DB_NAME: todo_db
34+
ports:
35+
- "5000:5000"
36+
healthcheck:
37+
test: ["CMD-SHELL", "curl -f http://localhost:5000/api/todos || exit 1"]
38+
interval: 30s
39+
timeout: 10s
40+
retries: 3
41+
start_period: 30s
42+
43+
frontend:
44+
image: kithupag/client:latest
45+
container_name: todo-frontend
46+
restart: always
47+
depends_on:
48+
- backend
49+
ports:
50+
- "80:80"
51+
healthcheck:
52+
test: ["CMD-SHELL", "curl -f http:/localhost || exit 1"]
53+
interval: 30s
54+
timeout: 10s
55+
retries: 3
56+
57+
volumes:
58+
db-data:
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
- name: Start containers
2+
shell: docker compose up -d
3+
args:
4+
chdir: "{{ app_dir }}"

0 commit comments

Comments
 (0)