-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPlaybook.yml
More file actions
144 lines (128 loc) · 3.64 KB
/
Copy pathPlaybook.yml
File metadata and controls
144 lines (128 loc) · 3.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
- hosts: all
become: true
user: ec2-user
tasks:
- name: Install Docker
become: yes
become_user: root
yum:
name: docker
update_cache: yes
- name: Install pip
become: yes
become_user: root
yum:
name: python3,python3-pip
update_cache: yes
- name: Install Docker Compose
become: yes
become_user: root
pip:
name: docker-compose
extra_args: --ignore-installed requests
- name: Create Docker CLI plugins directory
become: yes
become_user: root
file:
path: /usr/local/lib/docker/cli-plugins
state: directory
mode: "0755"
- name: Install Docker Compose plugin
become: yes
become_user: root
get_url:
url: https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64
dest: /usr/local/lib/docker/cli-plugins/docker-compose
mode: "0755"
- name: Start Docker
become: yes
become_user: root
service:
name: docker
state: started
enabled: yes
- name: Install Node.js
become: yes
become_user: root
yum:
name: nodejs
update_cache: yes
- name: Install rsync
become: yes
become_user: root
yum:
name: rsync
state: present
- name: Ensure /app folder exists
become: yes
become_user: root
file:
path: /app
state: directory
mode: "0755"
- name: Give permission to user ec2-user to /app folder
become: yes
become_user: root
file:
path: /app
owner: ec2-user
group: ec2-user
mode: "0755"
- name: Synchronize project files to /app folder
become: yes
become_user: root
synchronize:
src: ./
dest: /app/
delete: yes
rsync_opts:
- "--exclude=.git/"
- "--exclude=node_modules/"
- "--exclude=.env"
- "--exclude=frontend/.env"
- name: Create .env
become: yes
become_user: root
copy:
content: |
POSTGRES_USER={{ POSTGRES_USER }}
POSTGRES_PASSWORD={{ POSTGRES_PASSWORD }}
POSTGRES_DB={{ POSTGRES_DB }}
DATABASE_HOSTNAME={{ DATABASE_HOSTNAME }}
PGADMIN_DEFAULT_EMAIL={{ PGADMIN_DEFAULT_EMAIL }}
PGADMIN_DEFAULT_PASSWORD={{ PGADMIN_DEFAULT_PASSWORD }}
FRONTEND_DNS={{ FRONTEND_DNS }}
BACKEND_DNS={{ BACKEND_DNS }}
PGADMIN_DNS={{ PGADMIN_DNS }}
CLIENT_ID_GOOGLE={{ CLIENT_ID_GOOGLE }}
CLIENT_SECRET_GOOGLE={{ CLIENT_SECRET_GOOGLE }}
dest: /app/.env
force: yes
- name: Create .env for frontend
become: yes
become_user: root
copy:
content: |
VITE_BACKEND_DNS={{ BACKEND_DNS }}
dest: /app/frontend/.env
- name: Run npm install in /app/frontend
become: yes
command: npm install
args:
chdir: /app/frontend
- name: Check if Docker Compose stack is running
become: yes
become_user: root
command: docker compose -f /app/docker-compose.prod.yml ps
register: docker_compose_status
failed_when: docker_compose_status.rc not in [0, 1]
- name: Restart Docker Compose stack if running
become: yes
become_user: root
command: docker compose -f /app/docker-compose.prod.yml restart
when: docker_compose_status.rc == 0
- name: Deploy Docker Compose stack if not running
become: yes
become_user: root
command: docker compose -f /app/docker-compose.prod.yml up -d
when: docker_compose_status.rc != 0