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 }}"
0 commit comments