目录
- 1 Trerraform简介
- 2 Trerraform的安装
- 2.1 参考地址
- 2.2 安装方式
- 3 使用Terraform管理腾讯云
- 3.1 创建帐号并授权
- 3.2 添加Terraform的环境变量
- 3.3 配置provider文件
- 3.4 terraform init
- 3.5 terraform init -upgrade
- 3.6 terraform plan
- 3.7 terraform apply
- 3.8 terraform destroy
- 4 部署腾讯云资源
- 4.1 创建服务器实例资源文件
- 4.2 创建私有网络资源文件
- 4.3 创建子网资源文件
- 4.4 创建路由表资源文件
- 4.5 创建安全组和安全规则资源文件
- 4.6 验证
- 4.7 销毁资源
1 Trerraform简介
Trerraform 是一种部署技术,任何想要通过基础设施即代码(Infrastructure as Code,IaC)方法来置备和管理基础设施的人,都可以使用这种技术。基础设施指的主要是基于云的基础设施,不过从技术上讲,任何能够通过应用程序编程接口(Application Programming Interface,API)进行控制的东西都可以算作基础设施。基础设施即代码是通过机器可读的定义文件来管理和置备基础设施的过程的。我们使用 IaC 来自动完成原本要由人手动完成的过程。
2 Trerraform的安装
2.1 参考地址
https://developer.hashicorp.com/terraform/downloads
2.2 安装方式
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install terraform
查看terraform的版本
terraform -version
3 使用Terraform管理腾讯云
- 一次性配置 provider 文件以支持Tencent Cloud的OpenAPI
- 使用Terraform配置语法生成 .tf 资源文件
- 使用CLI实现腾讯云资源的管理
Terraform会将整个资源部署情况更新在 *.tf.state 文件中,让用户在前端控制台和后端平台都清晰的把控自己的云资源。
3.1 创建帐号并授权
登陆访问管理-用户-用户列表-新建用户,按照自己的方式选择创建用户,我选择了快速构建
3.2 添加Terraform的环境变量
vim ~/.profile
// Move terraform
$ mkdir downloads
$ mv terraform downloads/
$ vim ~/.profile
// Add terraform PATH
export PATH="$PATH:~/downloads"
重新加载~/.profile文件
$ source ~/.profile
查看Terraform当前版本
$ terraform -version
3.3 配置provider文件
在新目录下创建 provider.tf 文件,填入秘钥和区域信息
$ vim provider.tf
//provider.tf
provider "tencentcloud" {
id = "AKID****************"
ke = "QdcM***************"
region = "ap-hongkong"
}
注意:
保存该文件,执行 terraform init 初始化Terraform。此步骤,Terraform会自动检测 provider.tf文件中的 provider 字段,发送请求到Terraform官方GitHub下载最新版本腾讯云资源的模块和插件,初始化成功时当前脚本的版本信息也会显示出来。
腾讯云提供了另一种更为安全可靠的方式,把秘钥信息放在环境变量中配置
// Configure the secret key in the environment path
$ export TENCENTCLOUD_SEID="xxxxxxxxx"
$ export TENCENTCLOUD_SEY="xxxxxxxxx"
$ export TENCENTCLOUD_REGION="ap-hongkong"
provider.tf 文件中就可以省略掉相关信息
$ vim provider.tf
// provider.tf
provider "tencentcloud" {}
3.4 terraform init
// Initialize
$ terraform init
3.5 terraform init -upgrade
指令更新脚本,获取最新的应用
3.6 terraform plan
预览将要完成的操作
3.7 terraform apply
进行资源部署
3.8 terraform destroy
进行资源销毁
4 部署腾讯云资源
这里提供一个在私有网络(VPC)下创建腾讯云服务器(CVM)的简单用例
4.1 创建服务器实例资源文件
$ vim cvm.tf
// Create a cvm
resource "tencentcloud_instance" "cvm_test" {
instance_name = "cvm-test"
availability_zone = "ap-hongkong-1"
image_id = "img-pi0ii46r"
instance_type = "S2.SMALL1"
system_disk_type = "CLOUD_PREMIUM"
security_groups = [
"${tencentcloud_security_group.sg_test.id}"
]
vpc_id = "${tencentcloud_vpc.vpc_test.id"
subnet_id = "${tencentcloud_subnet.subnet_test.id}"
internet_max_bandwidth_out = 10
count = 1
}
这里可以看到,该服务器关联的安全组、私有网络和子网后面并没有直接填写具体参数信息,可以通过调用相关资源tf文件中的 id 字段内容实现具体的资源分配。本例中调用的就是安全组tf文件: sg_test ,私有网络tf文件: vpc_test ,路由表tf文件: route_table.tf和子网tf文件: subnet_test ,具体内容分别如下:
4.2 创建私有网络资源文件
$ vim vpc.tf
// Create a vpc
resource "tencentcloud_vpc" "vpc_test" {
name = "vpc-test"
cidr_block = "10.0.0.0/16"
}
4.3 创建子网资源文件
$ vim subnet.tf
// Create a subnet
resource "tencentcloud_subnet" "subnet_test" {
name = "subnet-test"
cidr_block = "10.0.1.0/24"
availability_zone = "ap-hongkong-1"
vpc_id = "${tencentcloud_vpc.vpc_test.id}"
route_table_id = "${tencentcloud_route_table.rtb_test.id}"
}
4.4 创建路由表资源文件
$ vim route_table.tf
// Create a route table
resource "tencentcloud_route_table" "rtb_test" {
name = "rtb-test"
vpc_id = "${tencentcloud_vpc.vpc_test.id}"
}
4.5 创建安全组和安全规则资源文件
$ vim security_group.tf
// Create a security group and rule
resource "tencentcloud_security_group" "sg_test" {
name = "sg-test"
}
resource "tencentcloud_security_group_rule" "sg_rule_test" {
security_group_id = "${tencentcloud_security_group.sg_test.id}"
type = "ingress"
cidr_ip = "0.0.0.0/0"
ip_protocol = "tcp"
port_range = "22,80"
policy = "accept"
}
执行 terraform plan
查看部署计划,一共有6个资源计划创建
参数解释:
- +代表新添加的资源
- 当销毁资源时,参数前面对应的符号会变为-
- 更改一些参数需要重新部署资源时,该资源前面的符号为-/+
- 在旧参数和新参数内容之间有→符号标识
执行terraform apply
进行资源创建
输入【yes】 ,显示成功创建资源
4.6 验证
到控制台进行查看创建的是否正确
4.7 销毁资源
输入【yes】,显示成功销毁资源