#!/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 " 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