Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Terraform 多版本管理 #78

Open
sh1un opened this issue Aug 23, 2024 · 0 comments
Open

Terraform 多版本管理 #78

sh1un opened this issue Aug 23, 2024 · 0 comments

Comments

@sh1un
Copy link
Owner

sh1un commented Aug 23, 2024

最近換了新電腦,所以再重新建置環境,也很多東西很自然的下載了最新版。

而我有的專案使用的 Terraform 有做版本約束,只能使用 Terraform 1.8.X,而我目前新電腦安裝的版本是 1.9.3,最簡單的做法肯定是刪除掉目前版本,然後去安裝 1.8.X 的 Terraform。

然而這很不切實際,因為我可能手上有非常多專案,每個專案都使用不同的版本,那豈不是我每次切專案就必須砍 Terraform 並重新安裝。

幸好有一個很棒的工具 tfenv 可以幫我們管理版本

由於我目前所使用的電腦是 macOS 以下指令我皆以 macOS 適用的指令示範

unlink 目前的 Terraform

如果不 unlink 現在的 Terraform ,你在安裝 tfenv 時會遇到衝突,如下圖

Untitled

衝突的原因是因為 tfenv 和 Homebrew 安裝的 terraform 會在同一個路徑(通常是 /usr/local/bin 或 /opt/homebrew/bin)中建立相同的符號連結(symlinks)來指向 terraform 可執行檔。當兩個不同的包管理工具試圖管理同一個可執行檔的符號連結時,就會產生衝突。

因為 Homebrew 和 tfenv 都會在相同的目錄中建立名為 terraform 的符號連結,所以它們會互相覆蓋彼此的符號連結。這就像是兩個不同的人同時想要在你的桌子上放置同名的檔案,結果會導致檔案的混亂和衝突。

所以我們就照著圖上的錯誤來執行指令吧:

$ brew unlink terraform

Unlinking /opt/homebrew/Cellar/terraform/1.9.3... 1 symlinks removed.

符號連結 (symlink) 是一種特殊的檔案,它實際上是一個指向其他檔案或目錄的引用。你可以把它想像成一個捷徑。當你訪問這個連結時,實際上是訪問它所指向的目標。

安裝 tfenv

我自己很喜歡使用 Homebrew 安裝東西,安裝 tfenv 指令如下:

brew install tfenv

安裝指定版本 Terraform

現在就可以安裝指定版本的 Terraform 了,以我這邊為例我想安裝 1.8.3

tfenv install 1.8.3

當我們要使用 1.8.3 的 Terraform 時,執行以下指令:

$ 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant