如何2分钟用terraform创建腾讯云CLB+CVM+Mysql资源?

大家好,随着腾讯云业务资源不断完善,公司业务不断增长,需要使用的资源和运维配置也越来越多,为大大降低资源配置复杂度,以及释放运维人员配置精力,近期发现国际多家云厂商和海外多云资源纳管SaaS平台,开始使用【Terraform】中间件生态产品,这个产品中间件通过创建一个prider虚拟中间层,实现上层业务命令转换到底层云平台的业务指令,阿里云的云架构图设计资源,就是通过Terraform中间件来完成自动业务架构创建使用的。

Terraform中间件

so,我们就当terraform是一套工具编排平台,支持对多云资源的增/删/改/查等业务指令集。下面就由我为大家整理一份,非常简单的入门级terraform使用教程。

1.创建terraform的.tf剧本集:

创建一个Terraform脚本来部署腾讯云资源需要使用腾讯云的Terraform提供者。

以下是一个基本的示例,它将创建一个VPC,两台云服务器,一个负载均衡器(CLB),以及一个MySQL数据库实例。请注意,你需要替换其中的一些占位符(如<YOUR_SECRET_ID><YOUR_SECRET_KEY>)为你的腾讯云账户信息。

代码语言:javascript
复制
provider "tencentcloud" {
  secret_id  = "<YOUR_SECRET_ID>"
  secret_key = "<YOUR_SECRET_KEY>"
  region     = "ap-guangzhou"
}

resource "tencentcloud_vpc" "my_vpc" {
  name       = "my_vpc"
  cidr_block = "10.0.0.0/16"
}

resource "tencentcloud_subnet" "my_subnet" {
  vpc_id            = tencentcloud_vpc.my_vpc.id
  name              = "my_subnet"
  cidr_block        = "10.0.1.0/24"
  availability_zone = "ap-guangzhou-3"
}

resource "tencentcloud_instance" "my_instance" {
  count             = 2
  availability_zone = "ap-guangzhou-3"
  image_id          = "img-pi0ii46r" # 以CentOS 7.2 64bit为例
  instance_type     = "S1.SMALL1"
  system_disk_type  = "CLOUD_BASIC"
  system_disk_size  = 50

  subnet_id = tencentcloud_subnet.my_subnet.id
  vpc_id    = tencentcloud_vpc.my_vpc.id

  name = "my_instance-${count.index}"
}

resource "tencentcloud_clb_instance" "my_clb" {
  name = "my_clb"
}

resource "tencentcloud_clb_listener" "my_listener" {
  clb_id    = tencentcloud_clb_instance.my_clb.id
  protocol  = "HTTP"
  port      = 80
  name      = "my_listener"
}

resource "tencentcloud_clb_attachment" "my_attachment" {
  listener_id = tencentcloud_clb_listener.my_listener.id
  instance_id = tencentcloud_instance.my_instance[0].id
}

resource "tencentcloud_cdb_instance" "my_cdb" {
  vpc_id             = tencentcloud_vpc.my_vpc.id
  subnet_id          = tencentcloud_subnet.my_subnet.id
  availability_zone  = "ap-guangzhou-3"
  engine_version     = "5.7"
  instance_type      = "cdb.t1.2g"
  name               = "my_cdb"
  root_password      = "yourpassword"
  port               = 3306
  allocate_public_ip = true
}

output "vpc_id" {
  value = tencentcloud_vpc.my_vpc.id
}

output "subnet_id" {
  value = tencentcloud_subnet.my_subnet.id
}

output "instance_ids" {
  value = tencentcloud_instance.my_instance.*.id
}

output "clb_id" {
  value = tencentcloud_clb_instance.my_clb.id
}

output "cdb_id" {
  value = tencentcloud_cdb_instance.my_cdb.id
}

在运行此脚本之前,请确保你已经安装了Terraform,并且已经设置了腾讯云的API密钥。此外,你需要根据实际情况调整资源的配置,比如实例类型、磁盘大小、镜像ID、数据库版本等。

请注意,这个脚本是一个基础的示例,实际部署时可能需要更多的配置和安全设置,比如设置安全组规则来保护你的云服务器和数据库实例

2.在CVM云主机上配置完成Terraform安装与运行:

要使用Terraform运行上述脚本,请按照以下步骤操作:

  1. 安装Terraform: 如果你还没有安装Terraform,请访问Terraform官网下载并安装适合你操作系统的版本。
  2. 配置腾讯云API密钥: 你需要一个腾讯云账户,并且需要在腾讯云控制台中创建API密钥。将<YOUR_SECRET_ID><YOUR_SECRET_KEY>替换为你的实际API密钥信息。
  3. 编写Terraform配置文件: 将上述Terraform脚本保存到一个.tf文件中,例如main.tf
  4. 初始化Terraform: 打开命令行工具,导航到包含main.tf文件的目录,然后运行以下命令来初始化Terraform工作目录:

    terraform init
    这将安装必要的Terraform提供者和模块。

  5. 计划部署: 运行以下命令来查看Terraform将要执行的操作:

这个命令会显示Terraform计划创建的资源,你可以检查这些信息以确保一切配置正确。

代码语言:txt
复制
terraform plan
  1. 应用配置: 如果terraform plan的输出看起来正确,你可以通过以下命令来应用配置:
代码语言:txt
复制
Terraform apply


在执行此命令时,Terraform会再次显示计划中的操作,并要求你确认是否继续。输入yes以确认并开始创建资源。

  1. 检查输出: 一旦terraform apply完成,如果你在脚本中定义了输出变量(如上述脚本中的output部分),Terraform将会打印这些输出。这些输出可以帮助你获取创建的资源的重要信息。
  2. 管理和更改资源: 如果你需要修改资源,只需更新main.tf文件中的配置,然后再次运行terraform apply。销毁资源: 当你不再需要这些资源时,可以运行以下命令来销毁所有由Terraform管理的资源:
代码语言:bash
复制
terraform destroy

这将删除所有资源,并释放相关的费用。

请确保在执行任何Terraform命令之前,你已经理解了脚本的内容和将要执行的操作。特别是terraform applyterraform destroy,这两个命令会在你的腾讯云账户中创建和删除资源,可能会产生费用。

思考:

---随着多云都在对接Terraform产品中间层,未来支持多云纳管资源,创建APi集,从【云资源】+【安全日志】+【Devops编排】形成新的聚合云趋势发展,编排调度更智能化。冲破海外市场,国外依赖国外云资源和安全标准,但只要双边开放对接,咱们中国优秀云产品也能进入国际市场,获得海外国际企业认可,服务海外企业业务。

参考阅读:

1.https://zhuanlan.zhihu.com/p/86110888

2.官网:https://www.terraform.io/

3.腾讯云Terraform编排工具:https://cloud.tencent.com/product/tiat

4.阿里云编排工具:https://help.aliyun.com/zh/cloud-shell/use-terraform-to-manage-alibaba-cloud-resources?