尝试使用EC2上的tfenv
tfenv是一个方便的管理工具,可以轻松切换多个版本的terraform,也可以安装terraform本身。
参照官方网站,尝试在EC2(AmazonLinux2)上操作以下内容:
– 安装tfenv
– 使用tfenv(安装terraform、切换版本、卸载等操作)
安装tfenv。
根据公式,只需从GitHub克隆到任意路径,并将其添加到tfenv/bin的环境变量中。
首先要检查是否安装了git。
$ yum list installed | grep git-all
$
由于未安装,所以请使用yum命令进行安装。
$ sudo yum install -y git-all
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
Resolving Dependencies
--> Running transaction check
---> Package git-all.noarch 0:2.23.3-1.amzn2.0.1 will be installed
・
・
(中略)
・
・
subversion.x86_64 0:1.7.14-11.amzn2.0.2 subversion-libs.x86_64 0:1.7.14-11.amzn2.0.2
subversion-perl.x86_64 0:1.7.14-11.amzn2.0.2 tcl.x86_64 1:8.5.13-8.amzn2.0.2
tk.x86_64 1:8.5.13-6.amzn2.0.2 trousers.x86_64 0:0.3.14-2.amzn2.0.2
Complete!
$
$ git help
usage: git [--version] [--help] [-C <path>] [-c <name>=<value>]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
・
・
(中略)
・
・
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.
$
然后进行 git clone。当你跳转到官方链接进入GitHub后,找到”安装”->”手动”,里面有具体的git clone命令和路径设置,按照那样的方式尝试一下。
$ git clone https://github.com/tfutils/tfenv.git ~/.tfenv
Cloning into '/home/ec2-user/.tfenv'...
remote: Enumerating objects: 21, done.
remote: Counting objects: 100% (21/21), done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 1105 (delta 8), reused 10 (delta 2), pack-reused 1084
Receiving objects: 100% (1105/1105), 216.01 KiB | 457.00 KiB/s, done.
Resolving deltas: 100% (703/703), done.
$
$ sudo ln -s ~/.tfenv/bin/* /usr/local/bin
ln: failed to create symbolic link ‘/usr/local/bin/terraform’: File exists
$
当我尝试安装 /usr/local/bin/terraform 的时候,却被告知已经存在了。
之前在 /usr/local/bin 目录下手动安装了 terraform,这是问题的原因。
虽然可以将符号链接创建到其他路径,但是由于今后打算使用 tfenv 管理 terraform,所以打算删除手动安装的部分。
$ sudo rm /usr/local/bin/terraform
$
$ sudo ln -s ~/.tfenv/bin/terraform /usr/local/bin/terraform
$
尝试使用tfenv
列出远程事项
显示可安装的Terraform版本。
$ tfenv list-remote
0.13.0-beta3
0.13.0-beta2
0.13.0-beta1
0.12.28
0.12.27
0.12.26
0.12.25
0.12.24
0.12.23
0.12.22
0.12.21
0.12.20
0.12.19
0.12.18
0.12.17
0.12.16
0.12.15
0.12.14
0.12.13
0.12.12
0.12.11
0.12.10
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.3
0.12.2
0.12.1
0.12.0
0.12.0-rc1
0.12.0-beta2
0.12.0-beta1
0.12.0-alpha4
0.12.0-alpha3
0.12.0-alpha2
0.12.0-alpha1
0.11.15-oci
0.11.14
0.11.13
0.11.12
0.11.12-beta1
0.11.11
0.11.10
0.11.9
0.11.9-beta1
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.11.0-rc1
0.11.0-beta1
0.10.8
・
・
(中略)
・
・
0.2.2
0.2.1
0.2.0
0.1.1
0.1.0
$
■安装
安装指定版本的Terraform。
$ tfenv install 0.12.28
Installing Terraform v0.12.28
Downloading release tarball from https://releases.hashicorp.com/terraform/0.12.28/terraform_0.12.28_linux_amd64.zip
#################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.12.28/terraform_0.12.28_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: tfenv_download.U0J4RG/terraform_0.12.28_linux_amd64.zip
inflating: /home/ec2-user/.tfenv/versions/0.12.28/terraform
Installation of terraform v0.12.28 successful. To make this your default version, run 'tfenv use 0.12.28'
$
版本的写法也可以是latest:^0.8,这样安装的是0.8系列的最新版本。
如果只写latest,将会安装所有版本的最新版本。
$ tfenv install latest:^0.11
Installing Terraform v0.11.15-oci
Downloading release tarball from https://releases.hashicorp.com/terraform/0.11.15-oci/terraform_0.11.15-oci_linux_amd64.zip
#################################################################################################################################### 100.0%
Downloading SHA hash file from https://releases.hashicorp.com/terraform/0.11.15-oci/terraform_0.11.15-oci_SHA256SUMS
No keybase install found, skipping OpenPGP signature verification
Archive: tfenv_download.OHhNMs/terraform_0.11.15-oci_linux_amd64.zip
inflating: /home/ec2-user/.tfenv/versions/0.11.15-oci/terraform
Installation of terraform v0.11.15-oci successful. To make this your default version, run 'tfenv use 0.11.15-oci'
$
安装了最新版本的0.11系(0.11.15-oci)。
$ tfenv install latest
Terraform v0.12.28 is already installed
$
当写下”latest”这个词时,默认会安装整个的最新版本(0.12.28)。
因此,这次由于已经提前安装了该版本,所以返回结果是这样的。
■清单
已安装的Terraform版本将显示出来。
选择版本时,使用命令将显示为*。
$ tfenv list
cat: /home/ec2-user/.tfenv/version: No such file or directory
Version could not be resolved (set by /home/ec2-user/.tfenv/version or tfenv use <version>)
tfenv-version-name failed
$
当被警告没有版本文件时,我生气了。
通过阅读错误信息,感觉打入”use”命令可能会创建文件,所以我尝试打入。
使用
请选择要使用的版本。
$ tfenv use 0.12.28
Switching default version to v0.12.28
Switching completed
$
应该已经可以使用这个list了吧。
$ tfenv list
* 0.12.28 (set by /home/ec2-user/.tfenv/version)
0.11.15-oci
$
可以了。使用0.12.28所选择的选项中已经包含了星号。
尝试切换到安装的其他版本(最新的0.11系列)。
$ tfenv use latest:^0.11
Switching default version to v0.11.15-oci
Switching completed
$
$
$ tfenv list
0.12.28
* 0.11.15-oci (set by /home/ec2-user/.tfenv/version)
$
一切平安,已经转变了。
顺便问一下,如果使用未安装的版本会怎样?
(系统会自动安装并为您选择吗?)
$ tfenv use latest:^0.10
No installed versions of terraform matched 'latest:^0.10'
$
只是出了个错误而已。
卸载
卸载指定版本的Terraform。
$ tfenv uninstall 0.11.15-oci
Uninstall Terraform v0.11.15-oci
Terraform v0.11.15-oci is successfully uninstalled
$
使用tfenv可以轻松安装/卸载和切换terraform版本。截至2020年7月,terraform版本仍然是0.x.x,未来可能会推出更多版本。在这其中可能会有一些破坏性的版本更新,因此有这样的管理工具非常方便。