terraform跨平台、跟多家公有云都有对接,之前我写过一篇linux平台terraform创建云服务器的文档,这里介绍windows平台terraform创建云服务器。
腾讯云官网文档:https://cloud.tencent.com/document/product/1653/102600
看这块
阿里云官网文档:
https://help.aliyun.com/zh/terraform/using-terraform-in-windows
建议详细看下阿里云文档框架,还没往下读细节,心中就已经思路清晰
这里我从Windows使用者角度展开下完整使用过程
1、下载Windows版terraform
https://developer.hashicorp.com/terraform/install
下载压缩包解压后有一个.exe
2、添加环境变量,让执行terraform.exe时不用加绝对路径,只敲terraform或terraform.exe就行
管理员身份运行这句命令,cmd或powershell都行
cmd /c "start rundll32 sysdm.cpl,EditEnvironmentVariables"
在上下2部分随便哪处的Path里添加上terraform.exe所在的目录,确保命令行敲terraform能通过Path找到这个terraform.exe就行。
添加好环境变量后,新开一个命令行查看效果。
另外,提醒下,忽略官网文档中的这个,我自始至终都没有用到这个。
如果你非要在Windows下添加TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY环境变量
还是通过刚提到的命令打开环境变量图形界面来手动添加,正如我前面截图里红色备注的那样:用不上。
3、打开命令行,在命令行所在目录下创建provider.tf文件和API接口文件api.tf(文件名字无所谓,后缀很重要,只识别.tf,没事别乱创建.tf文件)
你是哪个目录就在哪个目录下创建.tf文件,不要囿于腾讯云官网文档的误导以为只能在用户目录下创建
如果命令行所在目录下没有.tf文件,会报The directory has no Terraform configuration files.
4、provider.tf的内容如下
terraform {
required_providers {
tencentcloud = {
source = "tencentcloudstack/tencentcloud"
# 通过version指定版本
# version = ">=1.60.18"
}
}
}
provider "tencentcloud" {
secret_id = "换成你自己的"
secret_key = "换成你自己的"
region = "ap-shanghai" //换成你自己的大区代号
}
cvm.tf的内容如下
resource "tencentcloud_instance" "cvm_test" {
instance_name = "shawyang测试" //换成你自己的
availability_zone = "ap-shanghai-4" //换成你自己的可用区代号
image_id = "img-m07ny34j" //我这里用的2022公共镜像,换成你自己的镜像ID
instance_type = "S5.SMALL2" //换成你自己的机型代号
instance_charge_type = "POSTPAID_BY_HOUR" //按量计费
system_disk_type = "CLOUD_PREMIUM" //高性能云盘
system_disk_size = 40 //系统盘大小
hostname = "blackbeautybake" //hostname不是必须指定的,Windows注意不要超过15个字符,不要有特殊字符
project_id = 1214130 //默认项目代号是0,这里显性指定成自己的项目代号
vpc_id = "vpc-dvnmxoki" //换成你自己的VPCID
subnet_id = "subnet-5gtwidoz" //换成你自己的VPC子网ID
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR" //网络按流量计费
internet_max_bandwidth_out = 5 //带宽5Mbps
allocate_public_ip = true //分配公网IP
//instance_count = 2 //旧参数废弃了,新参数是count
count = 2 //创建2台
data_disks {
data_disk_name = "datadisk1" //换成你自己的数据盘名称
data_disk_type = "CLOUD_PREMIUM" //指定云盘类型,这里指定的高性能
data_disk_size = 250 //指定大小,如基于快照,大小需至少是快照vsize大小
data_disk_snapshot_id = "snap-k888q00o" //换成你自己的快照ID,如需全新盘则注释这个参数
}
data_disks {
data_disk_name = "datadisk2" //换成你自己的数据盘名称
data_disk_type = "CLOUD_PREMIUM" //指定云盘类型,这里指定的高性能
data_disk_size = 250 //指定大小,如基于快照,大小需至少是快照vsize大小
data_disk_snapshot_id = "snap-k888q00o" //换成你自己的快照ID,如需全新盘则注释这个参数
}
//多块数据盘如法炮制添加data_disks {}模块
//多块数据盘如法炮制添加data_disks {}模块
//多块数据盘如法炮制添加data_disks {}模块
//最多20块数据盘
//tags = {
// tagKey = "tagValue" //tag不是必须的,需要的话就指定
//}
// security_groups = ["sg-qd174dog"] //旧参数废弃了
orderly_security_groups = ["sg-qd174dog"] //换成你自己的安全组ID
password = "换成你自己的密码" //保留镜像设置和指定密码只能二选一
//keep_image_login = true
disable_monitor_service = false //是否安装云监控组件
disable_security_service = false //是否安装主机安全组件
disable_automation_service = false //是否安装TAT自动化助手
//UserData是base64编码的字符串,我这里指定的是创建机器时自动安装chrome浏览器,适用Windows NT 10系统,不适用≤2012R2的系统;需要注意的是,由于是连公网下载chrome,没有公网或点对点公网获取Chrome安装所需文件异常则会影响最终安装成功与否,理性看待
user_data = "PHBvd2Vyc2hlbGw+CiRQYXRoID0gIkM6XGNocm9tZV9pbnN0YWxsZXIuZXhlIjsKKG5ldy1vYmplY3QgU3lzdGVtLk5ldC5XZWJDbGllbnQpLkRvd25sb2FkRmlsZSgiaHR0cDovL2RsLmdvb2dsZS5jb20vY2hyb21lL2luc3RhbGwvMzc1LjEyNi9jaHJvbWVfaW5zdGFsbGVyLmV4ZSIsJFBhdGgpOwpTdGFydC1Qcm9jZXNzIC1GaWxlUGF0aCAkUGF0aCAtQXJncyAiL3NpbGVudCAvaW5zdGFsbCIgLVZlcmIgUnVuQXMgLVdhaXQ7ClJlbW92ZS1JdGVtICRQYXRoCjwvcG93ZXJzaGVsbD4="
}
更多参数参考官网文档
关于cvm的参数详见:
关于cbs的参数详见:
5、按顺序执行terraform命令
常用命令:https://help.aliyun.com/zh/terraform/common-commands
terraform init -upgrade
terraform validate
terraform plan -out test
terraform apply "test"
创建出的效果如下图(自动安装了Chrome、有2块基于快照的数据盘,但由于基于同一快照的多块盘的unique ID相同,会导致如下图先联机的那块盘分配了盘符,而另一块盘则由于uniq id冲突处于脱机状态,参考我这篇文档https://cloud.tencent.com/developer/article/1835478)
terraform show
terraform state list
terraform state show <资源类型>.<资源名称>
terraform destroy
上图是terraform destroy销毁2台机器
下图是我手动销毁后再调用terraform销毁时报没有对象的回显
6、腾讯云terraform官方例子
https://github.com/tencentcloudstack/terraform-provider-tencentcloud/tree/master/examples
https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/doc
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。