Shell Scripting For DevOps

2 min read

Day01
Day02
Add variables
Add arguments
Add Conditional Statement
Add for loop
While loop
Add Function
Day03
Error Handling
Deploying LIVE Django Project | Error handing |
#!/bin/bash
# Deploy a Django app and handle errors
# Function to clone the Django app code
code_clone() {
echo "Cloning the Django app..."
if [ -d "django-notes-app" ]; then
echo "The code directory already exists. Skipping clone."
else
git clone https://github.com/LondheShubham153/django-notes-app.git || {
echo "Failed to clone the code."
return 1
}
fi
}
# Function to install required dependencies
install_requirements() {
echo "Installing dependencies..."
sudo apt-get update && sudo apt-get install -y docker.io nginx docker-compose || {
echo "Failed to install dependencies."
return 1
}
}
# Function to perform required restarts
required_restarts() {
echo "Performing required restarts..."
sudo chown "$USER" /var/run/docker.sock || {
echo "Failed to change ownership of docker.sock."
return 1
}
# Uncomment the following lines if needed:
# sudo systemctl enable docker
# sudo systemctl enable nginx
# sudo systemctl restart docker
}
# Function to deploy the Django app
deploy() {
echo "Building and deploying the Django app..."
docker build -t notes-app . && docker-compose up -d || {
echo "Failed to build and deploy the app."
return 1
}
}
# Main deployment script
echo "********** DEPLOYMENT STARTED *********"
# Clone the code
if ! code_clone; then
cd django-notes-app || exit 1
fi
# Install dependencies
if ! install_requirements; then
exit 1
fi
# Perform required restarts
if ! required_restarts; then
exit 1
fi
# Deploy the app
if ! deploy; then
echo "Deployment failed. Mailing the admin..."
# Add your sendmail or notification logic here
exit 1
fi
echo "********** DEPLOYMENT DONE *********"
Thank You!
14
Subscribe to my newsletter
Read articles from Ritul Gupta directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Ritul Gupta
Ritul Gupta
Im looking for an opportunity to start a career in Cloud Technologies where I can enhance my knowledge and skills. Having knowledge and hands-on on Azure Cloud, AWS & Open Source tools - Docker, Kubernetes, Jenkins, Source Version Control, CI/CD Pipelines, and Script.