Skip to content

Automating Docker Swarm with Scripts

Automation can significantly enhance the efficiency and reliability of managing a Docker Swarm cluster. This guide covers how to automate monitoring, backup, and provisioning of nodes, services, and replicas.

Prerequisites

  • Docker Swarm set up and running
  • Basic knowledge of shell scripting

Automating Monitoring

Monitoring Resource Usage

Create a script to monitor resource usage of all services:

sh
#!/bin/bash
# filepath: /home/kelly/ws/scripts/monitor_services.sh

while true; do
    docker stats --no-stream
    sleep 60
done

Run this script in the background to continuously monitor resource usage.

Automating Backup

Backup Manager Nodes

Create a script to backup the state of manager nodes:

sh
#!/bin/bash
# filepath: /home/kelly/ws/scripts/backup_manager.sh

BACKUP_DIR="/home/kelly/ws/backups"
mkdir -p $BACKUP_DIR

docker run --rm \
    -v /var/lib/docker/swarm:/swarm \
    -v $BACKUP_DIR:/backup \
    alpine tar czf /backup/swarm-backup-$(date +%F).tar.gz /swarm

Schedule this script using cron to run at regular intervals.

Automating Provisioning

Provisioning Nodes

Create a script to add worker nodes to the swarm:

sh
#!/bin/bash
# filepath: /home/kelly/ws/scripts/add_worker.sh

MANAGER_IP="<MANAGER-IP>"
SWARM_TOKEN=$(docker -H $MANAGER_IP:2375 swarm join-token -q worker)

docker swarm join --token $SWARM_TOKEN $MANAGER_IP:2377

Replace <MANAGER-IP> with the IP address of your manager node.

Provisioning Services

Create a script to deploy a service:

sh
#!/bin/bash
# filepath: /home/kelly/ws/scripts/deploy_service.sh

SERVICE_NAME=$1
REPLICAS=$2
IMAGE=$3

docker service create --name $SERVICE_NAME --replicas $REPLICAS $IMAGE

Run this script with the service name, number of replicas, and Docker image as arguments.

Scaling Services

Create a script to scale a service:

sh
#!/bin/bash
# filepath: /home/kelly/ws/scripts/scale_service.sh

SERVICE_NAME=$1
REPLICAS=$2

docker service scale $SERVICE_NAME=$REPLICAS

Run this script with the service name and desired number of replicas as arguments.

Conclusion

By automating these tasks with scripts, you can ensure consistent and efficient management of your Docker Swarm cluster. Customize these scripts to fit your specific needs and integrate them into your workflow.