#!/bin/bash
BASE_URL=https://registry.hub.docker.com/v1/repositories
TF_PATH=~/bin/terraform
# set -x
# print all the docker tags found on official terraform repository
function _get_tf_tags() {
for tag in $(wget -q ${BASE_URL}/hashicorp/terraform/tags -O - | sed -e 's/[][]//g' -e 's/"//g' -e 's/ //g' | tr '}' '\n' | awk -F: '{print $3}'); do
echo $tag
done
}
if [[ "$1" == "list" ]]; then
_get_tf_tags
exit 0
fi
function _check_tf_version() {
_get_tf_tags | grep $1
if [[ $? -ne 0 ]]; then
# echo wersja nie istnieje
return 1
else
return 0
fi
}
function _get_current_tf_version() {
cat ${TF_PATH} | grep hashicorp/terraform | cut -d ':' -f 7 | cut -d ' ' -f 1
}
if [[ $# -lt 1 ]]; then
echo "Show list of Terraform Tags"
echo " $0 list"
echo
echo "Set Terraform Version"
echo " $0 <TERRAFORM_VERSION>"
echo
CURRENT_VERSION=$(_get_current_tf_version)
echo "Current version: ${CURRENT_VERSION}"
exit 1
fi
RET=$(_check_tf_version $1)
if [[ $? -eq 0 ]]; then
cat << _EOF > ${TF_PATH}
#!/bin/bash
TERRAFORM_OPTS=""
env | grep TF_VAR &>/dev/null
if [[ \$? -eq 0 ]]; then
OIFS=\$IFS
IFS=$'\n'
for ee in \$(env | grep TF_VAR); do
KEY=\$(echo \$ee | cut -d '=' -f 1)
TERRAFORM_OPTS="\${TERRAFORM_OPTS} -e \$KEY"
done
IFS=\$OIFS
fi
FAKEROOT=\$(git rev-parse --show-toplevel)
if [[ -z \${FAKEROOT} ]]; then
FAKEROOT=\${PWD}
fi
docker run --rm -i \
\${TERRAFORM_OPTS} \
-e AWS_PROFILE \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
-e STAGE \
-e TF_LOG \
-v \${FAKEROOT}:\${FAKEROOT} \
-v \${HOME}/.ssh:/root/.ssh:ro \
-v \${HOME}/.aws:/root/.aws:ro \
-w \${PWD} \
hashicorp/terraform:$1 "\$@"
_EOF
echo "Terraform $1 configured"
chmod +x ${TF_PATH}
else
echo "Version $1 doesn't exist"
fi
Comments