如何安装多个或两个版本的 Terraform?
Posted
技术标签:
【中文标题】如何安装多个或两个版本的 Terraform?【英文标题】:How to install multiple or two versions of Terraform? 【发布时间】:2020-05-23 14:37:35 【问题描述】:我有很多使用 Terraform 的 gcp-provider 在 Terraform 0.11 中编写的 Terraform 模块,并希望将其升级到 Terraform 0.12。
为此,我需要保留系统上安装的两个版本,并根据编写模块的版本使用版本。
我将在每个模块中一一进行,并使用terraform 0.12upgrade
升级模块以与this documentation 兼容Terraform 0.12。
如何在一个系统中安全地保存两个版本的 Terraform?
【问题讨论】:
【参考方案1】:我使用 Ubuntu 18.04,并按照以下步骤安全地实现了这一点。可以在任何 Linux 发行版上执行类似的步骤(确保您正在下载兼容的二进制文件。确认 here)
注意以 root 或 sudo 用户身份运行以下命令
创建目录以保存 Terraform 二进制文件
$ mkdir -p /usr/local/tf
$ mkdir -p /usr/local/tf/11
$ mkdir -p /usr/local/tf/12
下载两个版本的二进制文件
-
下载并解压
Terraform 0.11
的二进制文件到一个单独的目录中:
$ cd /usr/local/tf/11
$ wget https://releases.hashicorp.com/terraform/0.11.14/terraform_0.11.14_linux_amd64.zip
$ unzip terraform_0.11.14_linux_amd64.zip
$ rm terraform_0.11.14_linux_amd64.zip
下载并解压Terraform 0.12
的二进制文件到一个单独的目录中:
$ cd /usr/local/tf/12
$ wget https://releases.hashicorp.com/terraform/0.12.20/terraform_0.12.20_linux_amd64.zip
$ unzip terraform_0.12.20_linux_amd64.zip
$ rm terraform_0.12.20_linux_amd64.zip
在/usr/bin/
目录中为两个 Terraform 版本创建符号链接:
ln -s /usr/local/tf/11/terraform /usr/bin/terraform11
ln -s /usr/local/tf/12/terraform /usr/bin/terraform12
# Make both the symlinks executable
chmod ugo+x /usr/bin/terraform*
调用不同的版本
现在,命令terraform11
调用 0.11 版,terraform12
调用 0.12 版
示例:
$ terraform11
$ terraform12
注意
将二进制文件保存在单独的目录中也有助于将它们的插件分开,而不会相互干扰。【讨论】:
【参考方案2】:我强烈推荐tfenv 工具。它可以轻松轻松地用于管理多个 terraform 安装。如果您曾经使用过 nvm(用于 nodejs)或 rvm(用于 ruby),这很熟悉。
您甚至可以将.terraform-version
文件添加到您的模块中,当您将cd
进入模块时,该工具会自动为您切换 terraform 版本。
【讨论】:
对于那些怀疑者来说,这真的有效!一个简单的brew install tfenv
可以让您执行tfenv install min-required && tfenv use 0.15.4
之类的操作。非常适合在项目之间轻松切换!【参考方案3】:
让您的生活更轻松并安装tfswitch。它负责安装和在您需要的版本之间切换;它就像魔法一样工作。
【讨论】:
以上是关于如何安装多个或两个版本的 Terraform?的主要内容,如果未能解决你的问题,请参考以下文章