1 初始化環境
1.1 創建初始文件夾
$ cd /data
$ mkdir terraform
$ mkdir aliyun
terraform作為terraform的配置文件夾,內部的每一個.tf,.tfvars文件都會被加載。
1.2?配置provider
創建providers.tf文件,配置provider依賴。
provider "alicloud" {access_key = "xxxxxxxx"secret_key = "xxxxxxxx"region = "cn-beijing"
}
- provider這一行表明提供的阿里云的接口
- access_key和secret_key分別是阿里云的ak、sk。在阿里云的賬戶中可以獲取
- region 是管理的區域
1.3 初始化環境
執行命令 terraform init初始化環境。會自動讀取provider.tf 文件下載對應的依賴包。
terraform init
2 創建一臺ECS實例(分步驟執行)
為了安全起見,建議將ak/sk設置在環境變量里,設置后使用echo ${變量}確認下是否生效。
環境變量配置方式如下:
$ export ALICLOUD_ACCESS_KEY="LTAIUrZCw3********"
$ export ALICLOUD_SECRET_KEY="zfwwWAMWIAiooj14GQ2*************"
$ echo $ALICLOUD_ACCESS_KEY
$ echo $ALICLOUD_SECRET_KEY
2.1 創建交換機
當需要創建ecs資源的區域不存在vpc和交換機的情況下,需要優先創建交換機。
創建terraform.tf文件,完善ecs創建信息。
resource "alicloud_vpc" "vpc" {vpc_name = "tf_test_foo"cidr_block = "10.16.0.0/16"
}resource "alicloud_vswitch" "vsw" {vpc_id = alicloud_vpc.vpc.idcidr_block = "10.16.0.0/20"zone_id = "cn-beijing-b"
}
運行terraform plan 查看將被要執行的操作。
?terraform apply開始執行創建。
terraform show查看已創建的專有網絡和交換機。
2.2 創建安全組
在已有專有網絡中創建一個安全組并添加一個允許任何地址訪問的安全組規則。在terraform.tf文件中增加以下內容。
resource "alicloud_security_group" "default" {name = "default"vpc_id = alicloud_vpc.vpc.id
}resource "alicloud_security_group_rule" "allow_all_tcp" {type = "ingress"ip_protocol = "tcp"nic_type = "intranet"policy = "accept"port_range = "1/65535"priority = 1security_group_id = alicloud_security_group.default.idcidr_ip = "0.0.0.0/0"
}
執行terraform plan查看將被要執行的操作。
從上面的輸出可以發現,已經存在的資源不會被再次創建,只會創建新增的資源。另外由于之前的執行操作已經將新增變量存儲在本地,因此只要不刪除執行記錄,則變量將會被一直引用。?
執行terraform apply執行創建操作。
?執行terraform show查看創建結果。
執行結果會將歷史執行結果全部展示。
2.3 創建ECS
在terraform.tf文件中增加以下內容:
resource "alicloud_instance" "instance" {# cn-beijingavailability_zone = "cn-beijing-b"security_groups = alicloud_security_group.default.*.id# series IIIinstance_type = "ecs.n1.small"system_disk_category = "cloud_efficiency"image_id = "aliyun_3_x64_20G_alibase_20230424.vhd"instance_name = "ecs_name"vswitch_id = alicloud_vswitch.vsw.idinternet_max_bandwidth_out = 10
}
執行terraform plan查看將被要執行的操作。
執行terraform apply 執行變更:
?執行結果有報錯,去控制臺查看發現資源ecs資源并未被創建。經確認是該地域無當前機型,導致創建失敗。重新調整機型后重新執行:
此次報錯是因為可用區與創建vsw選擇的可用區不一致,無法查到vswid信息,導致創建失敗,將可用區修正后繼續執行:
?執行成功,登錄控制臺后發現資源均已被創建成功。
3 創建一臺ECS實例(一次性執行)
將創建vpc、vsw、安全組、ecs一次性全部執行,會發生什么呢?
不出現失敗的情況,以上資源均會被創建。
但是當某一個資源創建失敗后,后面的資源將不會再被創建,前面已經創建成功的將不會被刪除。當錯誤參數調整后再執行,已經創建的資源不會再次被創建,未被創建的資源將會繼續創建。