我有很多使用Terraform的gcp-provider用Terraform 0.11编写的Terraform模块,并希望将其升级到Terraform 0.12。
为此,我需要保留系统上已安装的两个版本,并根据写入模块的版本来使用该版本。
我将在每个模块中一步一步地进行操作,并使用services/api/OrderService
升级该模块,使其与this documentation的Terraform 0.12兼容。
如何在一个系统中安全地保留两个版本的Terraform?
答案 0 :(得分:4)
我强烈推荐tfenv工具。它理智而轻松地可用于管理多个地形安装。如果您曾经使用过nvm(用于nodejs)或rvm(用于ruby),这是很熟悉的。
您甚至可以在模块中添加.terraform-version
文件,并且当您将cd
插入模块时,该工具会自动为您切换Terraform版本。
答案 1 :(得分:3)
我使用Ubuntu 18.04,并按照以下步骤安全地实现了此目的。在任何Linux发行版上都可以执行类似的步骤来完成相同操作(确保您正在下载兼容的二进制文件。请确认here)
注意 以root或sudo用户身份运行以下命令
terraform 0.12upgrade
$ 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
目录中为两个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。它负责安装和切换所需的版本。就像魔术一样。