-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathinitial_deployment.sh
More file actions
executable file
·141 lines (121 loc) · 4.63 KB
/
initial_deployment.sh
File metadata and controls
executable file
·141 lines (121 loc) · 4.63 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
#!/bin/bash
set -e
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DATE=$(date +%Y%m%d)
LOG_FILE="$PROJECT_DIR/logs/initial_deployment_$DATE.log"
# Creating logs directory if it doesn't exist
mkdir -p "$PROJECT_DIR/logs"
# Defining logging function
log() {
local level="$1"
local message="$2"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
case "$level" in
"INFO")
echo "[$timestamp] [INFO] $message" | tee -a "$LOG_FILE"
;;
"DEBUG")
echo "[$timestamp] [DEBUG] $message" | tee -a "$LOG_FILE"
;;
"ERROR")
echo "[$timestamp] [ERROR] $message" | tee -a "$LOG_FILE"
;;
"WARNING")
echo "[$timestamp] [WARNING] $message" | tee -a "$LOG_FILE"
;;
*)
echo "[$timestamp] [INFO] $level $message" | tee -a "$LOG_FILE"
;;
esac
}
log "INFO" "========================================="
log "INFO" "Starting Mediatech initial deployment setup"
log "INFO" "Date: $(date '+%Y-%m-%d %H:%M:%S')"
log "INFO" "========================================="
# Step 1: System Package Update
log "INFO" "========================================="
log "INFO" "Step 1: System Package Update"
log "INFO" "========================================="
log "INFO" "Updating package lists and installing necessary packages..."
log "INFO" "Running sudo apt update..."
if sudo apt update -y 2>&1 | tee -a "$LOG_FILE"; then
log "INFO" "apt update completed successfully"
else
log "ERROR" "apt update failed"
exit 1
fi
log "INFO" "Running sudo apt upgrade..."
if sudo apt upgrade -y 2>&1 | tee -a "$LOG_FILE"; then
log "INFO" "apt upgrade completed successfully"
else
log "ERROR" "apt upgrade failed"
exit 1
fi
# Step 2: Install essential packages
log "INFO" "========================================="
log "INFO" "Step 2: Essential Packages Installation"
log "INFO" "========================================="
log "INFO" "Installing essential packages..."
if sudo apt install -y ca-certificates curl gnupg lsb-release apt-transport-https 2>&1 | tee -a "$LOG_FILE"; then
log "INFO" "Essential packages installed successfully"
else
log "ERROR" "Failed to install essential packages"
exit 1
fi
# Step 3: GPG Key and Repository Setup
log "INFO" "========================================="
log "INFO" "Step 3: GPG Key and Repository Setup"
log "INFO" "========================================="
log "INFO" "Setting up Docker GPG key and repository..."
sudo mkdir -p /e
if curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg; then
log "INFO" "Docker GPG key added successfully"
else
log "ERROR" "Failed to add Docker GPG key"
exit 1
fi
# Step 4: Docker Repository Configuration
log "INFO" "========================================="
log "INFO" "Step 4: Docker Repository Configuration"
log "INFO" "========================================="
log "INFO" "Configuring Docker repository..."
echo \
"deb [arch=$(dpkg --print-architecture) \
signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list | tee -a "$LOG_FILE" > /dev/null
sudo apt update -y 2>&1 | tee -a "$LOG_FILE"
# Step 5: Docker Installation
log "INFO" "=========================================="
log "INFO" "Step 5: Docker Installation"
log "INFO" "=========================================="
log "INFO" "Installing Docker and Docker Compose..."
if sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>&1 | tee -a "$LOG_FILE"; then
log "INFO" "Docker and Docker Compose installed successfully"
else
log "ERROR" "Failed to install Docker and Docker Compose"
exit 1
fi
# Step 6: Permissions
log "INFO" "========================================="
log "INFO" "Step 6: Permissions"
log "INFO" "========================================="
log "INFO" "Configuring Docker permissions..."
if ! groups "$USER" | grep -q docker; then
sudo usermod -aG docker "$USER"
log "INFO" "User $USER added to docker group"
else
log "DEBUG" "User $USER is already in the docker group"
fi
sudo systemctl start docker
sudo systemctl enable docker
# Step 7: Final report
log "INFO" "========================================="
log "INFO" "Step 7: Final Report"
log "INFO" "========================================="
log "INFO" "Deployment packages setup completed!"
docker --version | tee -a "$LOG_FILE"
docker compose version | tee -a "$LOG_FILE"
log "INFO" "Completed at: $(date '+%Y-%m-%d %H:%M:%S')"
log "INFO" "========================================="