前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >windows terraform创建云服务器

windows terraform创建云服务器

原创
作者头像
Windows技术交流
修改2024-12-20 15:09:48
修改2024-12-20 15:09:48
1840
举报
文章被收录于专栏:Windows技术交流Windows技术交流

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都行

代码语言:txt
复制
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的内容如下

代码语言:txt
复制
terraform {
  required_providers {
    tencentcloud = {
      source = "tencentcloudstack/tencentcloud"
      # 通过version指定版本
      # version = ">=1.60.18"
    }
  }
}

provider "tencentcloud" {
  secret_id = "换成你自己的"
  secret_key = "换成你自己的"
  region = "ap-shanghai" //换成你自己的大区代号
}

cvm.tf的内容如下

代码语言:txt
复制
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的参数详见:

https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs/resources/instance

关于cbs的参数详见:

https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs/resources/cbs_storage

5、按顺序执行terraform命令

常用命令:https://help.aliyun.com/zh/terraform/common-commands

代码语言:txt
复制
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

代码语言:txt
复制
terraform show
terraform state list
terraform state show <资源类型>.<资源名称>
代码语言:txt
复制
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

https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs/resources/instance

https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs/resources/cbs_storage

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档