天天看點

玩轉阿裡雲 Terraform(三):Terraform 的安裝和加速

上一篇《 玩轉阿裡雲 Terraform(二):Terraform 的幾個關鍵概念

》介紹了 Terraform 運作的幾個關鍵概念,掌握了這些名詞後,本文将詳細介紹如何安裝Terraform,為後續的動手實踐最準備。

由于Terraform是用Golang語言編寫的,并且是一個面向用戶端的工具,是以對Terraform的安裝等同于安裝一個可執行的二進制檔案,過程非常簡單。本文以Mac OS為例,詳細介紹如何在本地安裝Terraform,并在文章最後介紹一種可以加速Terraform安裝的方法。

1 Terraform 的安裝

Terraform 的安裝包含Terraform運作主體的安裝,Provider和Provisioner等插件的安裝。

1.1 Terraform 主體的安裝

本文以Mac OS為例,通過三步完成對Terraform的安裝:

第一步:下載下傳Terraform版本到本地特定目錄并解壓

通路

Terraform Release

頁面,點選想要下載下傳的版本(強烈建議下載下傳0.12.x版本,其對Terraform指令和文法規則做了很大的更新)目錄,找到Mac系統的

darwin_amd64

 包,點選直接下載下傳到特定目錄,如

workspace

 ,或者右鍵“複制連結位址”手動下載下傳和解壓:

$ mkdir workspace && cd workspace
$ wget https://releases.hashicorp.com/terraform/0.12.13/terraform_0.12.13_darwin_amd64.zip
$ unzip terraform_0.12.13_darwin_amd64.zip           

第二步:配置安裝目錄到PATH,以便系統可以識别

$ export PATH=$(PWD):$PATH

# 如果想要永久生效,可以将其配置到Profile變量檔案 ~/.bash_profile
$ echo export PATH=$(PWD):$PATH >> ~/.bash_profile
$ source ~/.bash_profile # 執行 source 指令使其生效           

第三步:驗證是否安裝成功

$ terraform version
Terraform v0.12.13           

如果想要在其他作業系統上安裝Terraform,可以參考官方展示的安裝步驟:

https://learn.hashicorp.com/terraform/getting-started/install.html#installing-terraform

1.2 插件的安裝

插件的安裝包括對Provider和Provisioner的安裝。插件的安裝有兩種方式:自動安裝和手動安裝。

init指令自動安裝插件

編寫了Terraform模闆之後,在模闆所在的目錄下執行

terraform init

 , terraform 将會根據模闆中指定的Provider和Provisioner的類型或者Provider中的資源類型,自動加載最新的或者指定的Provider版本:

provider "alicloud" {
  profile = "terraform"
  region  = "eu-central-1"
  version = "1.60.0"
}           

顯示指定Provider及其版本,

init

 指令将自動下載下傳阿裡雲Provider 1.60.0 版本:

$ terraform version
Terraform v0.12.8
+ provider.alicloud v1.60.0
           

如果在模闆中不指定Provider,那麼定義跟Provider版本相關的resource或者data source, 

init

 指令同樣可以完成對應Provider最新版本的下載下傳:

resource "alicloud_vpc" "default" {
  cidr_block = "172.16.0.0/16"
  ...
}           

下載下傳插件Package,手動安裝插件

除了

init

 指令自動下載下傳外,還可以手動完成插件的安裝。具體的操作步驟跟安裝Terraform主體的方法一樣,即通路Provider的下載下傳頁面:

https://releases.hashicorp.com/terraform-provider-alicloud/

 下載下傳特定版本的Package,并将其解壓到Terraform主體所在的目錄即可。感興趣的同學可以嘗試以下,本文不再贅述。

值得注意的是,如果模闆中定義的Provider的版本與本地安裝版本不一緻,那麼再次運作

init

 指令時,将以模闆優先。

2 Terraform 安裝加速

相信大部分同學在上述的下載下傳和安裝過程中,經常會遇到下載下傳失敗的問題。這因為Terraform及其Provider等插件的所有釋出的Release都存放在海外服務上,國内網絡通路時會遇到下載下傳速度慢甚至無法通路的情況。面對在這種情況,Hashicorp目前并未給出好的解決方案。

阿裡雲為了不影響大家對Terraform以及阿裡雲Provider的使用,在一款線上工具

CloudShell

 上對Terraform進行了預安裝,同時對

terraform init

 做了加速處理,支援對包括阿裡雲Provider

alicloud

 在内的更多Provider,如

docker

 ,

helm

kubernetes

local

null

random

 等20多種。CloudShell的加速過程可以詳見雲栖部落格《

加速Terraform init

》。

加速後的CloudShell将 

terraform init

 初始化的時間從 3min+ 降低到 3-6s ,大大降低了Terraform Provider安裝和使用的成本,歡迎大家使用。