Last active
February 18, 2025 23:07
-
-
Save Adron/90863e51c8c5c0ad2049890bcd8abbfb to your computer and use it in GitHub Desktop.
Install Terraform & Packer on Linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Script prerequisite > install jq > https://stedolan.github.io | |
# ******************************************************************************************** | |
# UPDATE: Check out Robert's repo here https://github.com/robertpeteuil/terraform-installer | |
# Robert's repo is more built out and has more options around the installation process. | |
# Cheers! -Adron | |
# ******************************************************************************************** | |
cd ~ | |
# Prerequisites | |
if [ "$(uname)" == "Darwin" ]; then | |
brew install jq | |
# For Linux | |
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then | |
sudo apt-get install --assume-yes jq | |
fi | |
# Get URLs for most recent versions | |
# For OS-X | |
if [ "$(uname)" == "Darwin" ]; then | |
terraform_url=$(curl https://releases.hashicorp.com/index.json | jq '{terraform}' | egrep "darwin.*64" | sort --version-sort -r | head -1 | awk -F[\"] '{print $4}') | |
packer_url=$(curl https://releases.hashicorp.com/index.json | jq '{packer}' | egrep "darwin.*64" | sort --version-sort -r | head -1 | awk -F[\"] '{print $4}') | |
# For Linux | |
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then | |
terraform_url=$(curl https://releases.hashicorp.com/index.json | jq '{terraform}' | egrep "linux.*amd64" | sort --version-sort -r | head -1 | awk -F[\"] '{print $4}') | |
packer_url=$(curl https://releases.hashicorp.com/index.json | jq '{packer}' | egrep "linux.*amd64" | sort --version-sort -r | head -1 | awk -F[\"] '{print $4}') | |
fi | |
# Create a move into directory. | |
cd | |
mkdir packer | |
mkdir terraform && cd $_ | |
# Download Terraform. URI: https://www.terraform.io/downloads.html | |
echo "Downloading $terraform_url." | |
curl -o terraform.zip $terraform_url | |
# Unzip and install | |
unzip terraform.zip | |
# Change directory to Packer | |
cd ~/packer | |
# Download Packer. URI: https://www.packer.io/downloads.html | |
echo "Downloading $packer_url." | |
curl -o packer.zip $packer_url | |
# Unzip and install | |
unzip packer.zip | |
if [ "$(uname)" == "Darwin" ]; then | |
echo ' | |
# Terraform & Packer Paths. | |
export PATH=~/terraform/:~/packer/:$PATH | |
' >>~/.bash_profile | |
source ~/.bash_profile | |
# For Linux | |
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then | |
echo ' | |
# Terraform & Packer Paths. | |
export PATH=~/terraform/:~/packer/:$PATH | |
' >>~/.bashrc | |
source ~/.bashrc | |
fi |
Out of everything I have tried @robertpeteuil's looks like the best solution
I don't (as some have noticed) maintain this script anymore, check out @robertpeteuil's script instead. It's here -> https://github.com/robertpeteuil/terraform-installer
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Like a few others in this thread, I came across this after creating my own terraform-installation-script.
If anyone is interested - my script will install the latest version or a specific version (if there are breaking changes you want to avoid).
@jmalibre - my script is MIT license if it works for you. I'm open to changes you may need.