Created
June 25, 2019 14:43
-
-
Save dradtke/e5da8eb5295519abe712b4ee8d1f6d9a to your computer and use it in GitHub Desktop.
Hashicorp tool installation script
This file contains hidden or 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
#!/bin/bash | |
# | |
# This script installs Hashicorp tools from their releases page. | |
# | |
# It follows the Checksum Verification recommendation described | |
# at https://www.hashicorp.com/security, and downloads the app | |
# as /usr/local/bin/<app>-<version>. | |
if [[ $# -ne 2 ]]; then | |
echo "usage: $0 <app> <version>" | |
exit 1 | |
fi | |
NAME="$1" | |
VERSION="$2" | |
OSARCH="linux_amd64" | |
cat >/tmp/hashicorp.asc <<EOF | |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
Version: GnuPG v1 | |
mQENBFMORM0BCADBRyKO1MhCirazOSVwcfTr1xUxjPvfxD3hjUwHtjsOy/bT6p9f | |
W2mRPfwnq2JB5As+paL3UGDsSRDnK9KAxQb0NNF4+eVhr/EJ18s3wwXXDMjpIifq | |
fIm2WyH3G+aRLTLPIpscUNKDyxFOUbsmgXAmJ46Re1fn8uKxKRHbfa39aeuEYWFA | |
3drdL1WoUngvED7f+RnKBK2G6ZEpO+LDovQk19xGjiMTtPJrjMjZJ3QXqPvx5wca | |
KSZLr4lMTuoTI/ZXyZy5bD4tShiZz6KcyX27cD70q2iRcEZ0poLKHyEIDAi3TM5k | |
SwbbWBFd5RNPOR0qzrb/0p9ksKK48IIfH2FvABEBAAG0K0hhc2hpQ29ycCBTZWN1 | |
cml0eSA8c2VjdXJpdHlAaGFzaGljb3JwLmNvbT6JATgEEwECACIFAlMORM0CGwMG | |
CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEFGFLYc0j/xMyWIIAIPhcVqiQ59n | |
Jc07gjUX0SWBJAxEG1lKxfzS4Xp+57h2xxTpdotGQ1fZwsihaIqow337YHQI3q0i | |
SqV534Ms+j/tU7X8sq11xFJIeEVG8PASRCwmryUwghFKPlHETQ8jJ+Y8+1asRydi | |
psP3B/5Mjhqv/uOK+Vy3zAyIpyDOMtIpOVfjSpCplVRdtSTFWBu9Em7j5I2HMn1w | |
sJZnJgXKpybpibGiiTtmnFLOwibmprSu04rsnP4ncdC2XRD4wIjoyA+4PKgX3sCO | |
klEzKryWYBmLkJOMDdo52LttP3279s7XrkLEE7ia0fXa2c12EQ0f0DQ1tGUvyVEW | |
WmJVccm5bq25AQ0EUw5EzQEIANaPUY04/g7AmYkOMjaCZ6iTp9hB5Rsj/4ee/ln9 | |
wArzRO9+3eejLWh53FoN1rO+su7tiXJA5YAzVy6tuolrqjM8DBztPxdLBbEi4V+j | |
2tK0dATdBQBHEh3OJApO2UBtcjaZBT31zrG9K55D+CrcgIVEHAKY8Cb4kLBkb5wM | |
skn+DrASKU0BNIV1qRsxfiUdQHZfSqtp004nrql1lbFMLFEuiY8FZrkkQ9qduixo | |
mTT6f34/oiY+Jam3zCK7RDN/OjuWheIPGj/Qbx9JuNiwgX6yRj7OE1tjUx6d8g9y | |
0H1fmLJbb3WZZbuuGFnK6qrE3bGeY8+AWaJAZ37wpWh1p0cAEQEAAYkBHwQYAQIA | |
CQUCUw5EzQIbDAAKCRBRhS2HNI/8TJntCAClU7TOO/X053eKF1jqNW4A1qpxctVc | |
z8eTcY8Om5O4f6a/rfxfNFKn9Qyja/OG1xWNobETy7MiMXYjaa8uUx5iFy6kMVaP | |
0BXJ59NLZjMARGw6lVTYDTIvzqqqwLxgliSDfSnqUhubGwvykANPO+93BBx89MRG | |
unNoYGXtPlhNFrAsB1VR8+EyKLv2HQtGCPSFBhrjuzH3gxGibNDDdFQLxxuJWepJ | |
EK1UbTS4ms0NgZ2Uknqn1WRU1Ki7rE4sTy68iZtWpKQXZEJa0IGnuI2sSINGcXCJ | |
oEIgXTMyCILo34Fa/C6VCm2WBgz9zZO8/rHIiQm1J5zqz0DrDwKBUM9C | |
=LYpS | |
-----END PGP PUBLIC KEY BLOCK----- | |
EOF | |
gpg --import /tmp/hashicorp.asc | |
pushd /tmp | |
BASE="https://releases.hashicorp.com/${NAME}/${VERSION}" | |
ARCHIVE="${NAME}_${VERSION}_${OSARCH}.zip" | |
CHECKSUM="${NAME}_${VERSION}_SHA256SUMS" | |
CHECKSUM_SIG="${CHECKSUM}.sig" | |
# Download the checksum first and verify that it's signed by Hashicorp. | |
wget "${BASE}/${CHECKSUM}" | |
wget "${BASE}/${CHECKSUM_SIG}" | |
sync | |
# Verify that the checksum was signed by Hashicorp. | |
gpg --verify "${CHECKSUM_SIG}" "${CHECKSUM}" || exit 13 | |
# Now download the release and verify that the checksum matches. | |
# Note that the checksum comes with sums for every platform, | |
# so we need to filter down to 64-bit Linux to avoid failures caused by | |
# the other releases not being present. | |
wget "${BASE}/${ARCHIVE}" | |
sync | |
cat "${CHECKSUM}" | grep -E "_${OSARCH}\\.zip$" | sha256sum --check - || exit 13 | |
# If we've reached this point, everything is good to go. | |
unzip "${ARCHIVE}" | |
mv ./${NAME} /usr/local/bin/${NAME}-${VERSION} | |
popd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment