全部產品
Search
文件中心

Terraform:Terraform安裝

更新時間:Jun 25, 2026

用10分鐘時間完成Terraform的安裝和配置,為通過Terraform生產基礎設施做好準備。

瞭解阿里雲Terraform的介紹中提到,Terraform是以二進位包的形式分發。所以您可以使用常見的包管理器安裝Terraform。

安裝Terraform

手動安裝

使用先行編譯包

登入Terraform官網,找到對應作業系統的zip包,並下載。

在下載完成後,請將程式包解壓到/usr/local/bin其餘檔案在複製完成後均可刪除,這並不會影響Terraform正常運行。

最後,請確保Terraform目錄在PATH變數中已正確配置,不同作業系統會有所不同。

Mac或Linux

列印您的PATH配置

echo $PATH

將Terraform二進位檔案移動到列出的位置之一。此命令假定二進位檔案當前位於您的Downloads檔案夾中並且您的PATH包含/usr/local/bin,但如果您的位置不同,您可以自訂命令中的目錄。

mv ~/Downloads/terraform /usr/local/bin/

Windows

  1. 進入控制台 -> 系統 -> 系統設定 -> 環境變數。

  2. 在系統變數中向下滾動,直到找到 PATH。

  3. 單擊編輯並進行相應更改。

  4. 請務必在前一個末尾添加分號,因為這是分隔字元,即 c:\path;c:\path2

  5. 啟動新控制台以使設定生效。

使用源

如果您期望從原始碼編譯二進位檔案,可以複製HashiCorp Terraform程式碼程式庫

git clone https://github.com/hashicorp/terraform.git

您將會看到如下進度提示資訊,並等待其執行完成。

tiankai@U-QDY6MW2N-0211 0203-Quickstart % git clone https://github.com/hashicorp/terraform.git
Cloning into 'terraform'...
remote: Enumerating objects: 298204, done.
remote: Counting objects: 100% (3099/3099), done.
remote: Compressing objects: 100% (1576/1576), done.
remote: Total 298204 (delta 1962), reused 2369 (delta 1459), pack-reused 295105
Receiving objects: 100% (298204/298204), 302.63 MiB | 3.62 MiB/s, done.
Resolving deltas: 100% (187677/187677), done.
Updating files: 100% (4517/4517), done.

執行完成後,您執行命令的目錄下會新增一個terraform名稱的目錄。通過cd指令進入該目錄。

cd terraform

然後,執行install 指令,這將會編譯目錄並將編譯後的包移動到$GOPATH/bin/terraform目錄中

go install

當您看到如下提示資訊,則說明正在編譯中。等待完成後即可進行下一步操作。

tiankai@U-ODY6MW2N-0211 terraform % go install
go: downloading github.com/hashicorp/go-checkpoint v0.5.0
go: downloading github.com/apparentlymart/go-shquot v0.0.1
go: downloading github.com/apparentlymart/go-userdirs v0.0.0-20200915174352-b0c018a67c13
go: downloading github.com/hashicorp/cli v1.1.6
go: downloading github.com/hashicorp/go-plugin v1.6.0
go: downloading github.com/hashicorp/terraform-svchost v0.1.1
go: downloading github.com/mattn/go-shellwords v1.0.12
go: downloading github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db
go: downloading go.opentelemetry.io/contrib/exporters/autoexport v0.45.0
go: downloading go.opentelemetry.io/otel v1.24.0
go: downloading go.opentelemetry.io/otel/sdk v1.24.0
go: downloading go.opentelemetry.io/otel/trace v1.24.0
go: downloading github.com/hashicorp/go-cleanhttp v0.5.2
go: downloading github.com/hashicorp/go-uuid v1.0.3
go: downloading github.com/zclconf/go-cty v1.14.4
go: downloading github.com/hashicorp/hcl/v2 v2.20.0
go: downloading github.com/hashicorp/terraform-registry-address v0.2.3
go: downloading golang.org/x/text v0.14.0

注意:如果提示zsh: command not found: go,則您需要先安裝go的環境

最終,確保terraform目錄在PATH中定義並可用。 PATH定義取決於您所使用的作業系統。

Mac或Linux

列印您的PATH配置

echo $PATH

將 Terraform 二進位檔案移動到列出的位置之一。此命令假定二進位檔案當前位於您的Downloads檔案夾中並且您的PATH包含/usr/local/bin,但如果您的位置不同,您可以自訂命令中的目錄。

mv ~/Downloads/terraform /usr/local/bin/

Windows

  1. 進入控制台 -> 系統 -> 系統設定 -> 環境變數。

  2. 在系統變數中向下滾動,直到找到 PATH。

  3. 單擊編輯並進行相應更改。

  4. 請務必在前一個末尾添加分號,如:c:\path;c:\path2

  5. 啟動新控制台以使設定生效。

macOS Homebrew

Homebrew 是一款在Mac系統上經常使用的包安裝工具。藉助Homebrew可以通過簡單的指令安裝Terraform。

第一步,安裝HashiCorp的tap,用來定義包在homebrew的位置。

brew tap hashicorp/tap

第二步,執行安裝指令,安裝Terraform

brew install hashicorp/tap/terraform
重要

安裝指令將索引最新的版本並進行安裝,如果在安裝一段時間後希望更新到最新版本。可以通過重新執行upgrade指令進行。

更新最新版本的Terraform,首先需要更新Homebrew。

brew update

然後,運行upgrade指令更新到最新版本。

brew upgrade hashicorp/tap/terraform

Windows Chocolatey

Chocolatey是一款在Windows系統上經常使用的包安裝工具。藉助Chocolatey可以通過簡單的指令安裝Terraform。

choco install terraform

CloudShell

阿里雲Cloud Shell是一款協助您營運的免費產品,預裝了Terraform的組件,您可直接在Cloud Shell中運行Terraform的命令。

首先,確保您有一個合法的、有相關許可權的阿里雲帳號。

其次,開啟瀏覽器,訪問Cloud Shell的地址https://shell.alibabacloud.com/

登入成功後,執行如下指令

terraform

您將看到,Terraform組件已經內建在CloudShell中,並且可以直接使用。

shell@Alicloud:~$ terraform
Usage: terraform [-version] [-help] <command> [args]
The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.
Common commands:
    apply              Builds or changes infrastructure
    console            Interactive console for Terraform interpolations
    destroy            Destroy Terraform-managed infrastructure
    env                Workspace management
    fmt                Rewrites config files to canonical format
    get                Download and install modules for the configuration
    graph              Create a visual graph of Terraform resources
    import             Import existing infrastructure into Terraform
    init               Initialize a Terraform working directory
    login              Obtain and save credentials for a remote host
    logout             Remove locally-stored credentials for a remote host
    output             Read an output from a state file
    plan               Generate and show an execution plan
    providers          Prints a tree of the providers used in the configuration
    refresh            Update local state file against real resources
    show               Inspect Terraform state or plan
    taint              Manually mark a resource for recreation
    untaint            Remove the 'tainted' state from a resource instance
    validate           Validates the Terraform files
    version            Prints the Terraform version
    workspace          Workspace management

All other commands:
    debug              Debug output management (experimental)
    force-unlock       Manually unlock the terraform state
    push               Obsolete command for Terraform Enterprise legacy (v1)
    state              Advanced state management
    taint              Manually mark a resource for recreation
    untaint            Manually unmark a resource as tainted
    validate           Validates the Terraform files
    version            Prints the Terraform version
    workspace          Workspace management
All other commands:
    0.12upgrade        Rewrites pre-0.12 module source code for v0.12
    debug              Debug output management (experimental)
    force-unlock       Manually unlock the terraform state
    push               Obsolete command for Terraform Enterprise legacy (v1)
    state              Advanced state management
shell@Alicloud:~$

更多Cloud Shell使用方式,請參見使用雲命令列

Linux

Alibaba Cloud Linux

yum install -y dnf-plugin-releasever-adapter
yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum install terraform
[root@iZbp17mtyk1tw8mmto999uZ ~]# yum install -y dnf-plugin-releasever-adapter
Last metadata expiration check: 0:04:07 ago on Tue 16 Jul 2024 02:45:35 PM CST.
Package dnf-plugin-releasever-adapter-1.0-3.al8.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@iZbp17mtyk1tw8mmto999uZ ~]# yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
Adding repo from: https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
[root@iZbp17mtyk1tw8mmto999uZ ~]# yum install terraform
Hashicorp Stable - x86_64                                                                527 kB/s | 1.4 MB     00:02
Last metadata expiration check: 0:00:01 ago on Tue 16 Jul 2024 02:45:35 PM CST.
Dependencies resolved.
================================================================================
 Package                Architecture        Version                Repository              Size
================================================================================
Installing:
 terraform              x86_64              1.9.2-1                hashicorp               27 M
Installing dependencies:
 git                    x86_64              2.43.5-1.0.1.al8       alinux3-updates          92 K
 git-core               x86_64              2.43.5-1.0.1.al8       alinux3-updates          11 M
 git-core-doc           noarch              2.43.5-1.0.1.al8       alinux3-updates         3.1 M
 perl-Error             noarch              1:0.17025-2.1.al8      alinux3-os               46 K

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 41 M
Installed size: 120 M
Is this ok [y/N]: y
...
Complete!
 perl-Git               noarch              2.43.5-1.0.1.al8       alinux3-updates          79 K
 perl-TermReadKey       x86_64              2.37-7.2.al8           alinux3-os               41 K
Transaction Summary
================================================================================
Install  7 Packages
Total download size: 41 M
Installed size: 131 M
Is this ok [y/N]: y
Downloading Packages:

驗證安裝

運行terraform驗證路徑配置。

terraform

命令運行後會顯示可用的Terraform選項的列表,表示安裝完成。

➜  ~ terraform
Usage: terraform [global options] <subcommand> [args]
The available commands for execution are listed below.
The primary workflow commands are given first, followed by
less common or more advanced commands.
Main commands:
  init          Prepare your working directory for other commands
  validate      Check whether the configuration is valid
  plan          Show changes required by the current configuration
  apply         Create or update infrastructure
  destroy       Destroy previously-created infrastructure
All other commands:
  console       Try Terraform expressions at an interactive command prompt
  fmt           Reformat your configuration in the standard style
  force-unlock  Release a stuck lock on the current workspace
  get           Install or upgrade remote Terraform modules
  graph         Generate a Graphviz graph of the steps in an operation
  import        Associate existing infrastructure with a Terraform resource
  login         Obtain and save credentials for a remote host
  logout        Remove locally-stored credentials for a remote host
  metadata      Metadata related commands
  output        Show output values from your root module
  providers     Show the providers required for this configuration
  refresh       Update the state to match remote systems
  show          Inspect Terraform state or plan
  state         Advanced state management
  taint         Mark a resource instance as not fully functional
  test          Experimental support for module integration testing
  untaint       Remove the 'tainted' state from a resource instance
  version       Show the current Terraform version
  workspace     Manage workspaces

Global options (use these before the subcommand, if any):
  -chdir=DIR    Switch to a different working directory before executing the
                given subcommand.
  -help         Show this message.
  -version      An alias for the "version" subcommand.
  show          Show the current state or a saved plan
  state         Advanced state management
  taint         Mark a resource instance as not fully functional
  test          Experimental support for module integration testing
  untaint       Remove the 'tainted' state from a resource instance
  version       Show the current Terraform version
  workspace     Workspace management
Global options (use these before the subcommand, if any):
  -chdir=DIR    Switch to a different working directory before executing the
                given subcommand.
  -help         Show this help output, or the help for a specified subcommand.
  -version      An alias for the "version" subcommand.