s4ros icon

terraform-version-picker

s4ros | PRO | 10/09/20 08:02:37 AM UTC (Edited) | 0 ⭐ | 445 👁️ | Never ⏰ | []
Bash |

1.82 KB

|

None

|

0 👍

/

0 👎

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