s4ros

terraform-version-picker

Dec 16th, 2019 (edited)
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.82 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. BASE_URL=https://registry.hub.docker.com/v1/repositories
  4. TF_PATH=~/bin/terraform
  5.  
  6. # set -x
  7. # print all the docker tags found on official terraform repository
  8. function _get_tf_tags() {
  9.   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
  10.     echo $tag
  11.   done
  12. }
  13.  
  14. if [[ "$1" == "list" ]]; then
  15.   _get_tf_tags
  16.   exit 0
  17. fi
  18.  
  19. function _check_tf_version() {
  20.   _get_tf_tags | grep $1
  21.   if [[ $? -ne 0 ]]; then
  22.     # echo wersja nie istnieje
  23.     return 1
  24.   else
  25.     return 0
  26.   fi
  27. }
  28.  
  29. function _get_current_tf_version() {
  30.   cat ${TF_PATH} | grep hashicorp/terraform | cut -d ':' -f 7 | cut -d ' ' -f 1
  31. }
  32.  
  33. if [[ $# -lt 1 ]]; then
  34.   echo "Show list of Terraform Tags"
  35.   echo "  $0 list"
  36.   echo
  37.   echo "Set Terraform Version"
  38.   echo "  $0 <TERRAFORM_VERSION>"
  39.   echo
  40.   CURRENT_VERSION=$(_get_current_tf_version)
  41.   echo "Current version: ${CURRENT_VERSION}"
  42.   exit 1
  43. fi
  44.  
  45. RET=$(_check_tf_version $1)
  46. if [[ $? -eq 0 ]]; then
  47.   cat << _EOF > ${TF_PATH}
  48. #!/bin/bash
  49.  
  50. TERRAFORM_OPTS=""
  51. env | grep TF_VAR &>/dev/null
  52. if [[ \$? -eq 0 ]]; then
  53.   OIFS=\$IFS
  54.   IFS=$'\n'
  55.   for ee in \$(env | grep TF_VAR); do
  56.     KEY=\$(echo \$ee | cut -d '=' -f 1)
  57.     TERRAFORM_OPTS="\${TERRAFORM_OPTS} -e \$KEY"
  58.   done
  59.   IFS=\$OIFS
  60. fi
  61.  
  62. FAKEROOT=\$(git rev-parse --show-toplevel)
  63.  
  64. if [[ -z \${FAKEROOT} ]]; then
  65.   FAKEROOT=\${PWD}
  66. fi
  67.  
  68. docker run --rm -i \
  69. \${TERRAFORM_OPTS} \
  70. -e AWS_PROFILE \
  71. -e AWS_ACCESS_KEY_ID \
  72. -e AWS_SECRET_ACCESS_KEY \
  73. -e STAGE \
  74. -e TF_LOG \
  75. -v \${FAKEROOT}:\${FAKEROOT} \
  76. -v \${HOME}/.ssh:/root/.ssh:ro \
  77. -v \${HOME}/.aws:/root/.aws:ro \
  78. -w \${PWD} \
  79. hashicorp/terraform:$1 "\$@"
  80. _EOF
  81.   echo "Terraform $1 configured"
  82.   chmod +x ${TF_PATH}
  83. else
  84.   echo "Version $1 doesn't exist"
  85. fi
  86.  
Add Comment
Please, Sign In to add comment