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

Ami*_*dav 7 terraform terraform-provider-gcp

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

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

我将一一了解每个模块,并根据本文档terraform 0.12upgrade升级该模块,使其与 Terraform 0.12 兼容。

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

Ami*_*dav 8

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

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

创建目录来保存 Terraform 二进制文件

$ mkdir -p /usr/local/tf
$ mkdir -p /usr/local/tf/11
$ mkdir -p /usr/local/tf/12
Run Code Online (Sandbox Code Playgroud)

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

  1. 下载二进制文件并将其解压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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 下载二进制文件并将其解压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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为目录中的两个 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*
    
    Run Code Online (Sandbox Code Playgroud)

调用不同版本

笔记

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


mjg*_*py3 5

我强烈推荐tfenv工具。它可以清晰、轻松地用于管理多个 terraform 安装。如果您曾经使用过 nvm(用于 Nodejs)或 RVM(用于 ruby​​),那么它会很熟悉。

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


小智 5

让您的生活变得轻松并安装tfswitch。它负责安装和在您需要的版本之间切换;它就像魔术一样起作用。