如何安装多个或两个版本的Terraform?

时间:2020-02-07 12:44:04

标签: terraform terraform-provider-gcp

我有很多使用Terraform的gcp-provider用Terraform 0.11编写的Terraform模块,并希望将其升级到Terraform 0.12。

为此,我需要保留系统上已安装的两个版本,并根据写入模块的版本来使用该版本。

我将在每个模块中一步一步地进行操作,并使用services/api/OrderService升级该模块,使其与this documentation的Terraform 0.12兼容。

如何在一个系统中安全地保留两个版本的Terraform?

3 个答案:

答案 0 :(得分:4)

我强烈推荐tfenv工具。它理智而轻松地可用于管理多个地形安装。如果您曾经使用过nvm(用于nodejs)或rvm(用于ruby),这是很熟悉的。

您甚至可以在模块中添加.terraform-version文件,并且当您将cd插入模块时,该工具会自动为您切换Terraform版本。

答案 1 :(得分:3)

我使用Ubuntu 18.04,并按照以下步骤安全地实现了此目的。在任何Linux发行版上都可以执行类似的步骤来完成相同操作(确保您正在下载兼容的二进制文件。请确认here

注意 以root或sudo用户身份运行以下命令

创建目录以保留Terraform二进制文件

terraform 0.12upgrade

下载两个版本的二进制文件

  1. 下载$ mkdir -p /usr/local/tf $ mkdir -p /usr/local/tf/11 $ mkdir -p /usr/local/tf/12 的二进制文件并将其提取到另一个目录中:
    Terraform 0.11
  2. 下载$ 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
  3. $ 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 目录中为两个Terraform版本创建符号链接:
    /usr/bin/

调用不同的版本

  • 现在,命令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* 调用版本0.11,而terraform11调用版本0.12
  • 示例:
    terraform12

注意

  • 将二进制文件保存在单独的目录中也有助于将其插件分开,而不会互相干扰。

答案 2 :(得分:0)

让生活变得轻松,并安装tfswitch。它负责安装和切换所需的版本。就像魔术一样。