天天看點

Terraform 基礎 定義阿裡雲資源

provider裡面提供了資源,接下來就開始定義阿裡雲的資源了。我們将阿裡雲的插件也就是provider安裝好了,接下來就是調用裡面的資源。

在terraform裡面最重要的就是資源,資源主要來自provider裡面,每個資源裡面都有很多屬性。

什麼是資源呢,比如網絡,vpc,安全組,ecs執行個體以及DNS的域名記錄,這些都是資源。

可以了解每個産品都是資源。

既然是要往配置檔案裡面寫資源,那麼它也是有它的格式的。

它的關鍵字是resource,後面就是資源的類型,後面就是自己定義資源的名稱,資源的名稱是自己定義的,因為我可能建立2個vpc,vpc的名稱肯定不能讓它一緻, 

Terraform 基礎 定義阿裡雲資源

vpc是阿裡雲的專有網絡,你可以了解為這個就是網段,建立多個vpc,vpc之間是有隔離的邏輯的。

比如可以建立測試環境的vpc,也可以建立生産環境的,它其實就是一個網段。

要申請阿裡雲的資源就需要知道在代碼裡面怎麼寫這些資源。如果不了解這些,強烈建議去阿裡雲的控制台上看看是如何使用的。

Terraform 基礎 定義阿裡雲資源
Terraform 基礎 定義阿裡雲資源

可以看到裡面有region資訊,專有網絡的名稱,位址段。

除了專有網絡之外,這裡還有交換機,填寫名稱和可用區,網段的建議,如下所示。

Terraform 基礎 定義阿裡雲資源

隻要屬性上面的界面,然後使用代碼的方式來實踐。現在就要去tf的配置檔案裡面寫我們申請哪些資源。 

VPC

Terraform 基礎 定義阿裡雲資源
Terraform 基礎 定義阿裡雲資源

​​Example Usage​​

Basic Usage(聲明一個專有網絡,專有網絡名稱和其網段)

resource "alicloud_vpc" "vpc" {
  vpc_name   = "tf_test_foo"
  cidr_block = "172.16.0.0/12"
}      
  • ​​cidr_block​​​ - (Optional) The CIDR block for the VPC. The ​

    ​cidr_block​

    ​​ is Optional and default value is ​

    ​172.16.0.0/12​

    ​ after v1.119.0+.
  • ​​vpc_name​​ - (Optional, Available in v1.119.0+) The name of the VPC. Defaults to null.

你要寫資源就需要打開文檔了,搜尋VPC。

第一個就是關鍵字+資源類型+自定義資源的名稱(這個名稱就是對應阿裡雲控制台建立vpc名稱那一欄)網段自己去配置設定。

Terraform 基礎 定義阿裡雲資源

注意這裡交換機和vpc是一起建立的,你得确定交換機屬于哪個vpc裡面,屬于哪個專有網絡。

這裡會有綁定的關系。下面就是資源的屬性

Terraform 基礎 定義阿裡雲資源

交換機要關聯vpc,怎麼關聯呢?通過vpc_id這個屬性,怎麼拿到這個資源的id呢?就需要資源參數的引用,也就是在一個資源裡面引用另外一個資源屬性或者參數。

這就需要資源類型(alicloud_vpc).name(定義的資源名稱 vpc).屬性(比如引用執行個體化之後的id)

在vpc裡面沒有定義id,因為需要建立完之後才有id,這裡引用的是執行個體化之後的id,如果在路由器裡面要使用vpc_name,那麼直接可以這樣寫vpc_id     = alicloud_vpc.vpc.vpc_name

有些參數是建立完之後才可以拿到的。

ECS安全組

Terraform 基礎 定義阿裡雲資源

類似于虛拟的防火牆,一般不開安全組,不開端口,那麼通路不了。是以需要在安全組裡面添加一些規則讓安全組去關聯。

​​阿裡雲登入 - 歡迎登入阿裡雲,安全穩定的雲計算服務平台​​

注意安全組也需要關聯VPC,是以在建立安全組的代碼裡面也會引用vpc id的資訊。

最後安全組無非就是開通端口這些。

Terraform 基礎 定義阿裡雲資源

​​Terraform Registry​​

Terraform 基礎 定義阿裡雲資源

安全組組成為 安全組+規則   組裡面包含一組規則

resource "alicloud_security_group" "group" {
  name   = "new-group"
  vpc_id = alicloud_vpc.vpc.id
  security_group_type = "normal"
}      

 vpc_id = alicloud_vpc.vpc.id 要關聯vpc,這是還是要引用其id。

  • ​​security_group_type​​​ - (Optional, ForceNew, Available in 1.58.0+) The type of the security group. Valid values: ​

    ​normal​

    ​​: basic security group. ​

    ​enterprise​

    ​: advanced security group For more information.

 可以看到一個是普通類型,一個是企業類型,這裡設定為普通的。

Terraform 基礎 定義阿裡雲資源

 最後就是建立安全組規則。

Terraform 基礎 定義阿裡雲資源

這裡有個出入方向,得選一個是出方向還是入方向,然後授權是允許還是拒絕。

優先級怎麼設定。

協定是什麼等等這些參數。

這裡開放端口,如果開放一個端口就是80/80,如果是範圍就是1-65535。

這個就需要引入安全組的id,security_group_id = alicloud_security_group.group.id,資源類型+名稱+資源的屬性,這樣就可以引用,并且關聯上。

resource "alicloud_security_group_rule" "allow_80_tcp" {
  type              = "ingress"
  ip_protocol       = "tcp"
  nic_type          = "intranet"
  policy            = "accept"
  port_range        = "80/80"
  priority          = 1
  security_group_id = alicloud_security_group.group.id
  cidr_ip           = "0.0.0.0/0"
}      

 總結