-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·125 lines (99 loc) · 4.33 KB
/
deploy.sh
File metadata and controls
executable file
·125 lines (99 loc) · 4.33 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
#!/bin/bash
if [ -f .env ]; then
export $(grep -v '^#' .env | xargs)
else
echo ".env file not found!"
exit 1
fi
if [ -z "$WORDPRESS_DB_HOST" ] || [ -z "$WORDPRESS_DB_USER" ] || [ -z "$WORDPRESS_DB_PASSWORD" ] || [ -z "$WORDPRESS_DB_NAME" ]; then
exit 1
fi
terraform init
terraform apply -auto-approve
terraform init
terraform apply -auto-approve
INSTANCE_IP=$(terraform output -raw instance_public_ip)
RDS_ENDPOINT=$(terraform output -raw rds_endpoint)
while ! ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no -i /home/harshal/Downloads/my-key.pem ubuntu@$INSTANCE_IP exit; do
sleep 5
done
export RDS_HOST=$RDS_ENDPOINT
ansible-playbook -i ansible/inventory.ini ansible/docker_deployment.yml
ssh -o StrictHostKeyChecking=no -i /home/harshal/Downloads/my-key.pem ubuntu@$INSTANCE_IP <<EOF
sudo apt update && sudo apt install -y mysql-client
until mysql -h "$WORDPRESS_DB_HOST" -u "$WORDPRESS_DB_USER" -p"$WORDPRESS_DB_PASSWORD" -e "SELECT 1;" &> /dev/null; do
sleep 5
done
mysql -h "$WORDPRESS_DB_HOST" -u "$WORDPRESS_DB_USER" -p"$WORDPRESS_DB_PASSWORD" -e "
CREATE DATABASE IF NOT EXISTS $WORDPRESS_DB_NAME;
GRANT ALL PRIVILEGES ON $WORDPRESS_DB_NAME.* TO '$WORDPRESS_DB_USER'@'%';
FLUSH PRIVILEGES;"
docker run -d --name wordpress -p 80:80 \
-e WORDPRESS_DB_HOST="$WORDPRESS_DB_HOST" \
-e WORDPRESS_DB_USER="$WORDPRESS_DB_USER" \
-e WORDPRESS_DB_PASSWORD="$WORDPRESS_DB_PASSWORD" \
-e WORDPRESS_DB_NAME="$WORDPRESS_DB_NAME" \
wordpress:latest
sleep 10
docker exec wordpress bash -c "
apt update && apt install -y wget less &&
wget -O /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar &&
chmod +x /usr/local/bin/wp"
echo "Checking if WordPress is already installed..."
echo "Updating system and installing MySQL client..."
sudo apt update && sudo apt install -y mysql-client
echo "Waiting for MySQL to be ready..."
until mysql -h "rdstf.cjuemy0ssuvb.ap-south-1.rds.amazonaws.com" -u "harshal" -p"harshal1234" -e "SELECT 1;" &> /dev/null; do
sleep 5
done
echo "Ensuring the database exists..."
mysql -h "rdstf.cjuemy0ssuvb.ap-south-1.rds.amazonaws.com" -u "harshal" -p"harshal1234" -e "
CREATE DATABASE IF NOT EXISTS wordpress;
GRANT ALL PRIVILEGES ON wordpress.* TO 'harshal'@'%';
FLUSH PRIVILEGES;"
echo "Stopping and removing existing WordPress container..."
sudo docker stop wordpress || true
sudo docker rm wordpress || true
echo "Running a new WordPress container..."
sudo docker run -d --name wordpress -p 80:80 \
-e WORDPRESS_DB_HOST="rdstf.cjuemy0ssuvb.ap-south-1.rds.amazonaws.com" \
-e WORDPRESS_DB_USER="harshal" \
-e WORDPRESS_DB_PASSWORD="harshal1234" \
-e WORDPRESS_DB_NAME="wordpress" \
wordpress:latest
echo "Waiting for WordPress container to start..."
sleep 10
echo "Installing WP-CLI inside the container..."
sudo docker exec wordpress bash -c "
apt update && apt install -y wget less &&
wget -O /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar &&
chmod +x /usr/local/bin/wp"
echo "Running WordPress installation..."
echo "Checking if WordPress is already installed..."
if sudo docker exec wordpress bash -c "wp core is-installed --path='/var/www/html' --allow-root"; then
echo "WordPress is already installed!"
else
echo "Running WordPress installation..."
sudo docker exec wordpress bash -c "
wp core install \
--url='https://harshal.joshiharshal.cloud' \
--title='$WORDPRESS_SITE_TITLE' \
--admin_user='$WORDPRESS_ADMIN_USER' \
--admin_password='$WORDPRESS_ADMIN_PASSWORD' \
--admin_email='$WORDPRESS_ADMIN_EMAIL' \
--path='/var/www/html' \
--allow-root"
sudo docker exec wordpress bash -c "wp option update siteurl 'https://harshal.joshiharshal.cloud' --allow-root"
sudo docker exec wordpress bash -c "wp option update home 'https://harshal.joshiharshal.cloud' --allow-root"
echo "WordPress setup complete!"
--url='http://harshal.joshiharshal.cloud' \
--title='Harshal Site' \
--admin_user='harshal' \
--admin_password='harshal1234' \
--admin_email='[email protected]' \
--path='/var/www/html' \
--allow-root"
echo " WordPress setup complete!"
fi
EOF
echo "Deployment completed successfully!"