You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
$ tfenv use 1.8.3
Switching default version to v1.8.3
Default version (when not overridden by .terraform-version or TFENV_TERRAFORM_VERSION) is now: 1.8.3
檢查一下現在的 Terraform 版本:
$ terraform -v
Terraform v1.8.3
on darwin_arm64
Your version of Terraform is out of date! The latest version
is 1.9.3. You can update by downloading from https://www.terraform.io/downloads.html
如果要切換到別的版本,也很簡單 ,也是使用 tfenv use {version}(若發現沒安裝會自動安裝)
至於要怎麼查看現在已安裝的 Terraform 版本,可以使用以下指令列出來:
$ tfenv list
* 1.9.3 (set by /opt/homebrew/Cellar/tfenv/3.0.0/version)
1.8.3
The text was updated successfully, but these errors were encountered:
最近換了新電腦,所以再重新建置環境,也很多東西很自然的下載了最新版。
而我有的專案使用的 Terraform 有做版本約束,只能使用 Terraform 1.8.X,而我目前新電腦安裝的版本是 1.9.3,最簡單的做法肯定是刪除掉目前版本,然後去安裝 1.8.X 的 Terraform。
然而這很不切實際,因為我可能手上有非常多專案,每個專案都使用不同的版本,那豈不是我每次切專案就必須砍 Terraform 並重新安裝。
幸好有一個很棒的工具 tfenv 可以幫我們管理版本
由於我目前所使用的電腦是 macOS 以下指令我皆以 macOS 適用的指令示範
unlink 目前的 Terraform
如果不 unlink 現在的 Terraform ,你在安裝 tfenv 時會遇到衝突,如下圖
衝突的原因是因為 tfenv 和 Homebrew 安裝的 terraform 會在同一個路徑(通常是 /usr/local/bin 或 /opt/homebrew/bin)中建立相同的符號連結(symlinks)來指向 terraform 可執行檔。當兩個不同的包管理工具試圖管理同一個可執行檔的符號連結時,就會產生衝突。
因為 Homebrew 和 tfenv 都會在相同的目錄中建立名為 terraform 的符號連結,所以它們會互相覆蓋彼此的符號連結。這就像是兩個不同的人同時想要在你的桌子上放置同名的檔案,結果會導致檔案的混亂和衝突。
所以我們就照著圖上的錯誤來執行指令吧:
安裝 tfenv
我自己很喜歡使用 Homebrew 安裝東西,安裝 tfenv 指令如下:
安裝指定版本 Terraform
現在就可以安裝指定版本的 Terraform 了,以我這邊為例我想安裝 1.8.3
當我們要使用 1.8.3 的 Terraform 時,執行以下指令:
檢查一下現在的 Terraform 版本:
$ terraform -v Terraform v1.8.3 on darwin_arm64 Your version of Terraform is out of date! The latest version is 1.9.3. You can update by downloading from https://www.terraform.io/downloads.html
如果要切換到別的版本,也很簡單 ,也是使用
tfenv use {version}
(若發現沒安裝會自動安裝)至於要怎麼查看現在已安裝的 Terraform 版本,可以使用以下指令列出來:
$ tfenv list * 1.9.3 (set by /opt/homebrew/Cellar/tfenv/3.0.0/version) 1.8.3
The text was updated successfully, but these errors were encountered: