DEV Community

Vijay Gangatharan
Vijay Gangatharan

Posted on

Automate your Pipeline environment checklist

Have you ever encountered a challenge while developing an application that involves AWS? Perhaps you're uncertain whether the AWS CLI is installed or if your credentials are set up correctly. Manually verifying these aspects can disrupt your workflow and consume valuable time. This is where automation proves beneficial! In this discussion, we will examine a useful Bash script designed to simplify these checks, allowing you to focus more on your development tasks.

The Script Breakdown
Let's dissect the script line by line:

#!/bin/bash -eo pipefail
Enter fullscreen mode Exit fullscreen mode

This line specifies the script interpreter (Bash) and establishes certain flags. The -e option causes the script to terminate immediately if any command in a pipe (|) chain returns a non-zero status code. The -o pipefail option ensures that the exit code from the last command that fails in a pipe is inherited.

# Check if jq is installed
if ! command -v jq &> /dev/null; then
  echo "jq is not installed. Installing jq..."
  if command -v apt-get &> /dev/null; then
    sudo apt-get update && sudo apt-get install -y jq
  else
    echo "Error: Package manager not found. Please install jq manually."
    exit 1
  fi
fi
Enter fullscreen mode Exit fullscreen mode

This segment verifies the installation of jq, a lightweight JSON parser utilized for handling JSON output from commands. If jq is not detected, the script will try to install it via apt-get for Debian-based systems. In the absence of apt-get, the script will alert the user to manually install jq and then terminate.

# Check if AWS CLI is installed
if ! command -v aws &> /dev/null; then
  echo "AWS CLI is not installed. Installing AWS CLI..."
  if command -v apt-get &> /dev/null; then
    sudo apt-get update && sudo apt-get install -y awscli
  else
    echo "Error: Package manager not found. Please install AWS CLI manually."
    exit 1
  fi
fi
Enter fullscreen mode Exit fullscreen mode

This section mirrors the previous one, checking for the aws command (AWS CLI) and attempting to install it with apt-get if necessary.

# Check if AWS credentials are loaded
if ! aws sts get-caller-identity &> /dev/null; then
  echo "Error: AWS credentials are not loaded"
  exit 1
fi
Enter fullscreen mode Exit fullscreen mode

The script checks for the configuration of AWS credentials by executing the aws sts get-caller-identity command. This command is designed to obtain details about the current user, provided that the credentials are correctly configured. In the event of a failure in executing the command, the script generates an error message and terminates.

Benefits for Developers
This script automates essential pre-development checks for AWS environments. By running this script before diving into your code, you can:

  • Save time: No more manual checks for jq, AWS CLI, or credentials.
  • Reduce errors: Early detection of missing dependencies or configuration issues helps prevent development roadblocks.
  • Improve workflow: A streamlined process lets you focus on coding with confidence.

How to Use the Script

  1. Save the script as a file (e.g., aws_check.sh).
  2. Make the script executable: chmod +x aws_check.sh.
  3. Run the script from your terminal: ./aws_check.sh.

The script will display messages and take necessary actions (installing dependencies) based on its checks.

Customization
This script is a basic template. You can modify it to suit your specific needs. For example, you could:

  • Add checks for other tools or configurations relevant to your project.
  • Change the installation commands based on your operating system and package manager.

Remember to adjust the script with caution and test it thoroughly before deploying it in your development workflow.

Conclusion
This Bash script demonstrates the power of automation for streamlining repetitive tasks. By incorporating this script into your development process, you can free yourself from manual checks and focus on building amazing things!

Top comments (0)