Skip to content

Instantly share code, notes, and snippets.

@romach
Forked from Vidimensional/terraform_installer.sh
Last active January 25, 2021 21:33
Show Gist options
  • Save romach/369a3edae8025cfff39a85f5ec78f7d8 to your computer and use it in GitHub Desktop.
Save romach/369a3edae8025cfff39a85f5ec78f7d8 to your computer and use it in GitHub Desktop.
Terraform Installer
#!/bin/bash
# sudo ./terraform_installer.sh -a linux_amd64
set -e
while getopts a: flag
do
case "${flag}" in
a) ARCHITECTURE=${OPTARG};;
esac
done
INSTALLATION_PATH="/usr/bin"
TERRAFORM_RELEASES_URL="https://releases.hashicorp.com/terraform"
GITHUB_RELEASES_URL="https://api.github.com/repos/hashicorp/terraform/releases"
echo "-> Getting latest release number."
release="$( curl -s ${GITHUB_RELEASES_URL} | jq '.[].tag_name' | head -n1 | grep -Eo '[0-9.]+' )"
echo "-> Latest release is ${release}."
if [ -e "${INSTALLATION_PATH}/${release}" ]; then
echo "Version already installed."
exit
fi
echo "-> Downloading Terraform ${release}."
TMP_DOWNLOAD_PATH="/tmp/terraform_${release}_${ARCHITECTURE}.zip"
wget -O"${TMP_DOWNLOAD_PATH}" "${TERRAFORM_RELEASES_URL}/${release}/terraform_${release}_${ARCHITECTURE}.zip"
trap 'rm -vf "${TMP_DOWNLOAD_PATH}"' EXIT INT TERM #Clean ${TMP_DOWNLOAD_PATH} at exit.
echo "-> Checking SHA256 sum."
original_sha256sum="$( curl -s "${TERRAFORM_RELEASES_URL}/${release}/terraform_${release}_SHA256SUMS" | awk -v pattern="${ARCHITECTURE}" '$0~pattern {print $1}' )"
local_sha256sum="$( sha256sum "${TMP_DOWNLOAD_PATH}" | awk '{print $1}' )"
echo "Original SHA256 sum: ${original_sha256sum}"
echo "Local SHA256 sum: ${local_sha256sum}"
if [ "${original_sha256sum}" != "${local_sha256sum}" ]; then
echo "SHA256SUM FAIL"
exit 1
fi
unzip "${TMP_DOWNLOAD_PATH}" -d "${INSTALLATION_PATH}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment