两种办法:建议采用2(1我还没顾上验证)
terraform依赖go环境,go环境配置参考https://cloud.tencent.com/developer/article/1836994
1、参考https://github.com/tencentcloudstack/terraform-provider-tencentcloud#readme
需要Go1.13和Terraform 0.13
https://releases.hashicorp.com/terraform/0.13.0/
2、手动配置
terraform依赖go环境,go环境配置参考https://cloud.tencent.com/developer/article/1836994
terraform下载地址:https://releases.hashicorp.com/terraform/
找到terraform 0.13.x版本下载地址进行下载
我做实验时下载的terraform_0.13.0
http://releases.hashicorp.com/terraform/0.13.7/terraform_0.13.7_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.6/terraform_0.13.6_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.5/terraform_0.13.5_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.4/terraform_0.13.4_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.3/terraform_0.13.3_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.2/terraform_0.13.2_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.1/terraform_0.13.1_linux_amd64.zip
http://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.0_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.1_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.2_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.3_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.4_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.5_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.6_linux_amd64.zip
http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.7_linux_amd64.zip
# wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/terraform_0.13.0_linux_amd64.zip
# mkdir terraform_dir
# unzip terraform_0.13.0_linux_amd64.zip
# mv terraform terraform_dir/
# echo "export PATH=$PATH:/root/terraform_dir" >> /etc/profile && source /etc/profile
# cd terraform_dir/
# vim provider.tf
添加内容
provider "tencentcloud" {
secret_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
secret_key = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
region = "ap-shanghai"
}
# terraform init
第一次执行 terraform init 会提醒让执行terraform 0.13upgrade
执行terraform 0.13upgrade后会提示让敲yes
敲完yes后会看到
紧接着再执行一次terraform init就会看到
敲 yes 后继续执行 terraform init
需要注意的是,有时候敲yes后再敲一遍terraform init就ok了,但有时候可能需要执行几次terraform init才能成功,例如下图
接下来就是编辑cvm.tf文件
vim cvm.tf
请注意里面的参数值请具体化成你自己的
resource "tencentcloud_instance" "cvm_test" {
instance_name = "xxx测试"
availability_zone = "ap-shanghai-4"
image_id = "img-29hl923v"
instance_type = "S5.SMALL2"
instance_charge_type = "POSTPAID_BY_HOUR"
system_disk_type = "CLOUD_PREMIUM"
system_disk_size = 50
//hostname = "cvm_test"
project_id = 1214130
vpc_id = "vpc-dvnmxoki"
subnet_id = "subnet-5gtwidoz"
internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
internet_max_bandwidth_out = 5
allocate_public_ip = true
instance_count = 2
//count = 2
data_disks {
data_disk_type = "CLOUD_PREMIUM"
data_disk_size = 10
data_disk_snapshot_id = "snap-4zyitidw"
}
//tags = {
// tagKey = "tagValue"
//}
//security_groups = ["xxx"]
password = "Fuzasuijimima@qq.com"
//keep_image_login = true
disable_monitor_service = false
disable_security_service = false
//user_data = "PHBvd2Vyc2hlbGw+CmdldC1kYXRlIC1mb3JtYXQgSEg6bW06c3M6ZmZmZmZmZiA+PiBDOlxhYWEudHh0OwpTZXQtRXhlY3V0aW9uUG9saWN5IC1TY29wZSBDdXJyZW50VXNlciBVbnJlc3RyaWN0ZWQgLWZvcmNlCmlmKC1OT1QgKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c1ByaW5jaXBhbF1bU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NJZGVudGl0eV06OkdldEN1cnJlbnQoKSkuSXNJblJvbGUoW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzQnVpbHRJblJvbGVdICJBZG1pbmlzdHJhdG9yIikpCnsgICAKJGFyZ3VtZW50cyA9ICImICciICsgJG15aW52b2NhdGlvbi5teWNvbW1hbmQuZGVmaW5pdGlvbiArICInIgpTdGFydC1Qcm9jZXNzIHBvd2Vyc2hlbGwgLVZlcmIgcnVuQXMgLUFyZ3VtZW50TGlzdCAkYXJndW1lbnRzCkJyZWFrCn0KZ2V0LWRhdGUgLWZvcm1hdCBISDptbTpzczpmZmZmZmZmID4+IEM6XGFhYS50eHQ7CgpuZXQgdXNlciBBZG1pbmlzdHJhdG9yICJGdXphc3VpamltaW1hQHFxLmNvbSIKZWNobyAiUkVHRURJVDQiID4gYzpcdGVtcC5yZWcKZWNobyAiW0hLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvblxXaW5sb2dvbl0iID4+IGM6XHRlbXAucmVnCmVjaG8gImAiQXV0b0FkbWluTG9nb25gIj1gIjFgIiI+PiBjOlx0ZW1wLnJlZwplY2hvICJgIkRlZmF1bHRVc2VyTmFtZWAiPWAiQWRtaW5pc3RyYXRvcmAiIiAgPj4gYzpcdGVtcC5yZWcKZWNobyAiYCJEZWZhdWx0UGFzc3dvcmRgIj1gIkZ1emFzdWlqaW1pbWFAcXEuY29tYCIiID4+IGM6XHRlbXAucmVnCmNtZCAvYyAicmVnIGltcG9ydCBjOlx0ZW1wLnJlZyIKCnN0YXJ0LXNsZWVwIDEwCnJlc3RhcnQtY29tcHV0ZXIgLWZvcmNlIDI+JG51bGwKCmdldC1kYXRlIC1mb3JtYXQgSEg6bW06c3M6ZmZmZmZmZiA+PiBDOlxhYWEudHh0Owo8L3Bvd2Vyc2hlbGw+"
}
编好后就可以执行terraform validate来验证是否存在语法问题,没问题的话就可以执行terraform plan了,注意执行terraform plan时加-out参数,因为光执行terraform plan会报
Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
去除这个报错的办法就是加-out参数,例如terraform plan -out test
然后就是执行terraform apply "test"
要销毁上面创建的cvm的话,执行terraform destroy
1.59.18之前的版本(本文档首次实验时,provider是1.59.14版本)
如果大家亲自试一遍的话,会发现 instance_count = 2跟count = 2都能创建2台机器出来,但是执行terraform destroy的话,instance_count = 2的情况只能销毁1台机器,因为创建机器的时候记录了1个instanceid,销毁的时候应该就是读创建时记录的那些个instanceid的,由于就记录了1个,所以销毁的时候也就销毁1个。
试了count = 2的情况下,创建的时候记录了2个instanceid,销毁的时候也记录了2个instanceid。
另外, instance_count = 2跟count = 2的情况在资源编排TIC上的表现跟在linux terraform环境中的表现一样。
估计instance_count = 2是个bug吧。
1.59.18及其之后的版本(本文档第二次实验时,provider是1.61.4),instance_count和count的情况正好反过来了。总之,1.59.18之前的版本用instance_count,1.59.18及其之后的版本用count,这问题是我反馈给腾讯云修正的
关于cvm的参数详见:
关于cbs的参数详见:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。