Course contentsShow
← Linux
Lesson 223 of 1,8192. Deep Dive into Bash ScriptingFree lesson

Deployment Automation Logic

Coordinate large-scale configuration pushes via shell-based orchestration.

In this lesson, you will learn how to coordinate large-scale configuration changes across multiple remote servers using shell-based orchestration.

When managing a fleet of servers, manually logging into each one to update a configuration file is prone to human error and inefficiency. Instead, we use "Orchestration Logic," which treats your primary machine as a control node that pushes verified configurations to your worker nodes in a standardized, controlled sequence.

The Anatomy of an Orchestration Script

A shell-based orchestrator acts like a conductor. It should perform three distinct steps: Inventory, Validation, and Execution.

  1. Inventory: Maintain a list of target IP addresses or hostnames in a flat file (e.g., servers.txt).
  2. Validation: Before sending a file, verify that the configuration is syntactically correct on your local machine using your previously learned skills in unit testing.
  3. Execution: Use ssh to transmit the file and trigger a restart of the relevant service.

Here is a simplified example of how you might push a config file to multiple servers:

#!/bin/bash
# orchestrator.sh

CONFIG_FILE="nginx.conf"
SERVER_LIST="servers.txt"

# 1. Validate local config first
if ! nginx -t -c "$(pwd)/$CONFIG_FILE"; then
    echo "Config invalid! Aborting deployment."
    exit 1
fi

# 2. Iterate and push
while read -r server; do
    echo "Pushing to $server..."
    scp "$CONFIG_FILE" "$server:/etc/nginx/nginx.conf"
    ssh "$server" "systemctl restart nginx"
done < "$SERVER_LIST"

Ensuring Atomic Reliability

When scaling this logic, you must account for "partial failures." What happens if the 3rd server out of 10 fails to restart? A robust orchestrator includes a "rollback" mechanism. If the ssh command returns a non-zero exit code (identifying an error), the script should immediately stop and report exactly which server failed, rather than proceeding blindly. By keeping your script small and using set -e to stop on errors, you ensure that your automation logic remains predictable and safe across your entire infrastructure.

Key Takeaway: Orchestration is the practice of validating your configuration once locally, then reliably distributing it to your fleet using a loop that monitors for failure at every step.