Terraform 基础 定义阿里云资源 VPC、安全组
provider里面提供了資源,接下來就開始定義阿里云的資源了。我們將阿里云的插件也就是provider安裝好了,接下來就是調用里面的資源。
在terraform里面最重要的就是資源,資源主要來自provider里面,每個資源里面都有很多屬性。
什么是資源呢,比如網絡,vpc,安全組,ecs實例以及DNS的域名記錄,這些都是資源。
可以理解每個產品都是資源。
既然是要往配置文件里面寫資源,那么它也是有它的格式的。
它的關鍵字是resource,后面就是資源的類型,后面就是自己定義資源的名稱,資源的名稱是自己定義的,因為我可能創建2個vpc,vpc的名稱肯定不能讓它一致,?
vpc是阿里云的專有網絡,你可以理解為這個就是網段,創建多個vpc,vpc之間是有隔離的邏輯的。比如可以創建測試環境的vpc,也可以創建生產環境的,它其實就是一個網段。
要申請阿里云的資源就需要知道在代碼里面怎么寫這些資源。如果不了解這些,強烈建議去阿里云的控制臺上看看是如何使用的。
可以看到里面有region信息,專有網絡的名稱,地址段。
除了專有網絡之外,這里還有交換機,填寫名稱和可用區,網段的建議,如下所示。
只要屬性上面的界面,然后使用代碼的方式來實踐。現在就要去tf的配置文件里面寫我們申請哪些資源。?
VPC
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名稱那一欄)網段自己去分配。
注意這里交換機和vpc是一起創建的,你得確定交換機屬于哪個vpc里面,屬于哪個專有網絡。
這里會有綁定的關系。下面就是資源的屬性
交換機要關聯vpc,怎么關聯呢?通過vpc_id這個屬性,怎么拿到這個資源的id呢?就需要資源參數的引用,也就是在一個資源里面引用另外一個資源屬性或者參數。
這就需要資源類型(alicloud_vpc).name(定義的資源名稱 vpc).屬性(比如引用實例化之后的id)
在vpc里面沒有定義id,因為需要創建完之后才有id,這里引用的是實例化之后的id,如果在路由器里面要使用vpc_name,那么直接可以這樣寫vpc_id ? ? = alicloud_vpc.vpc.vpc_name
有些參數是創建完之后才可以拿到的。
output "vswitch_id" {value = alicloud_vswitch.vsw.id }output "vpc_id" {value = alicloud_vpc.vpc.id }Changes to Outputs:+ vpc_id = (known after apply)+ vswitch_id = (known after apply)ECS安全組
類似于虛擬的防火墻,一般不開安全組,不開端口,那么訪問不了。所以需要在安全組里面添加一些規則讓ECS去關聯。
阿里云登錄 - 歡迎登錄阿里云,安全穩定的云計算服務平臺
注意安全組也需要關聯VPC,所以在創建安全組的代碼里面也會引用VPC?ID的信息。
最后安全組無非就是開通端口這些(安全組下面有很多的規則,所以安全組和規則是兩個資源)
Terraform Registry
安全組組成:安全組+規則? ?組里面包含一組規則
resource "alicloud_security_group" "group" {name = "new-group"vpc_id = alicloud_vpc.vpc.idsecurity_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.
?可以看到一個是普通類型,一個是企業類型,這里設置為普通的。
?最后就是創建安全組規則。
這里有個出入方向,得選一個是出方向還是入方向,然后授權是允許還是拒絕。
- priority?- (Optional, ForceNew) Authorization policy priority, with parameter values:?1-100, default value: 1.(優先級怎么設置)?
- ip_protocol?- (Required, ForceNew) The protocol. Can be?tcp,?udp,?icmp,?gre?or?all.(?協議是什么等等這些參數。)
- port_range?- (ForceNew) The range of port numbers relevant to the IP protocol. Default to "-1/-1". When the protocol is tcp or udp, each side port number range from 1 to 65535 and '-1/-1' will be invalid. For example,?1/200?means that the range of the port numbers is 1-200. Other protocols' 'port_range' can only be "-1/-1", and other values will be invalid.(這里開放端口,如果開放一個端口就是80/80,如果是范圍就是1-65535)
- security_group_id?- (Required, ForceNew) The security group to apply this rule to.(?這個就需要引入安全組的id,security_group_id = alicloud_security_group.group.id,資源類型+名稱+資源的屬性,這樣就可以引用,并且關聯上。)
- nic_type?- (Optional, ForceNew) Network type, can be either?internet?or?intranet, the default value is?internet.(nic_type ? ? ? ? ?= "intranet" 這個是選擇外網還是內網,選擇內網)
總結
其實你對照控制臺上面的字段,就可以看到非常簡單,都代碼化了。上面全部就是定義阿里云的資源。
依賴關系(交換機依賴于vpc,安全組依賴于vpc,安全組規則依賴于安全組)
總結
以上是生活随笔為你收集整理的Terraform 基础 定义阿里云资源 VPC、安全组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法-程序与系统的灵魂
- 下一篇: 如何将 MPG 转换为 MP4