Установка tfswitch в Unix/Linux

Tfswitch — Инструмент командной строки позволяет переключаться между различными версиями terraform. Если у вас не установлена определенная версия terraform, tfswitch позволяет загрузить желаемую версию. Установка минимальна и проста. После установки просто выберите нужную версию из раскрывающегося списка и начните использовать terraform.

Установка tfswitch в Unix/Linux

Установка очень простая и приведу пару примеров как можно установить желаемую тулзу.

Установка tfswitch в Mac OS

Для начала, стоит установить HOMEBREW, и после чего, выполняем установку:

$ brew install warrensbox/tap/tfswitch

Перейдем к настройке и использовании.

Установка tfswitch в Linux

Для Линукса, разработчики предусмотрели шел-скрипт:

$ curl -L https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh | bash

Или, через Snapcraft для CentOS, Ubuntu, Linux Mint, RHEL, Debian, Fedora:

$ sudo snap install tfswitch

Или, можно скомпилить тулу с исходного кода:

$ git clone https://github.com/warrensbox/terraform-switcher.git

Можно использовать!

Настройка и использование tfswitch в Unix/Linux

Если вы используете bash, то для автоматического переключения можно добавить следующую настройку в «~/.bashrc»:

cdtfswitch(){
  builtin cd "$@";
  cdir=$PWD;
  if [ -e "$cdir/.tfswitchrc" ]; then
    tfswitch
  fi
}
alias cd='cdtfswitch'

Замечание, — можно использовать «.tfswitchrc» или «.tfswitch.toml» или «.terraform-version».

Если вы используете zsh, то для автоматического переключения можно добавить следующую настройку в «~/.zshrc»:

load-tfswitch() {
  local tfswitchrc_path=".tfswitchrc"

  if [ -f "$tfswitchrc_path" ]; then
    tfswitch
  fi
}
add-zsh-hook chpwd load-tfswitch
load-tfswitch

Если вы используете fish, то для автоматического переключения можно добавить следующую настройку в «~/.config/fish/config.fish»:

function switch_terraform --on-event fish_postexec
    string match --regex '^cd\s' "$argv" > /dev/null
    set --local is_command_cd $status

    if test $is_command_cd -eq 0 
      if count *.tf > /dev/null

        grep -c "required_version" *.tf > /dev/null
        set --local tf_contains_version $status

        if test $tf_contains_version -eq 0      
            command tfswitch
        end
      end
    end
end

Как-то так.

Использование tfswitch

Переходим в проект с Терраформ кодом и выполняем:

 ~/Projects/Terraform/aws/examples/transit_gateway   dev  tfswitch
Reading required version from terraform file, constraint: ~> 0.13
Matched version: 0.13.5
2020/12/08 19:51:46 Creating directory for terraform: /Users/captain/.terraform.versions/
Downloading https://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_darwin_amd64.zip to terraform_0.13.5_darwin_amd64.zip
Downloading ...
35665893 bytes downloaded.
Switched terraform to version "0.13.5"
 ~/Projects/Terraform/aws/examples/transit_gateway   dev 

После этого, tfswitch скачает нужную версию ПО которая описана в вашем файле:

terraform {
  required_version = "~> 0.13"
}

Использование tfswitch в Continuous Integration

Например, можно внедрить tfswitch в Jenkins пайплайну:

#!/bin/bash 

echo "Installing tfswitch locally"
wget https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh  #Get the installer on to your machine

chmod 755 install.sh #Make installer executable

./install.sh -b `pwd`/.bin      #Install tfswitch in a location you have permission

CUSTOMBIN=`pwd`/.bin            #set custom bin path

export PATH=$PATH:$CUSTOMBIN    #Add custom bin path to PATH environment

$CUSTOMBIN/tfswitch -b $CUSTOMBIN/terraform 0.11.7 #or simply tfswitch -b $CUSTOMBIN/terraform 0.11.7

terraform -v                    #testing version

Так же, можно внедрить tfswitch в Circle CI пайплайну:

version: 2
jobs:
  build:
    docker:
      - image: ubuntu

    working_directory: /go/src/github.com/warrensbox/terraform-switcher

    steps:
      - checkout
      - run: 
          command: |    
            set +e   
            apt-get update 
            apt-get install -y wget 
            rm -rf /var/lib/apt/lists/*

            echo "Installing tfswitch locally"

            wget https://raw.githubusercontent.com/warrensbox/terraform-switcher/release/install.sh  #Get the installer on to your machine

            chmod 755 install.sh            #Make installer executable

            ./install.sh -b `pwd`/.bin      #Install tfswitch in a location you have permission

            CUSTOMBIN=`pwd`/.bin            #set custom bin path

            export PATH=$PATH:$CUSTOMBIN    #Add custom bin path to PATH environment

            $CUSTOMBIN/tfswitch -b $CUSTOMBIN/terraform 0.11.7 #or simply tfswitch -b $CUSTOMBIN/terraform 0.11.7

            terraform -v                    #testing version

Вот и все, статья «Установка tfswitch в Unix/Linux» завершена.

This entry was posted in Без рубрики. Bookmark the permalink.

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.