功能简介
1 | Terraform是IT 基础架构自动化编排工具,它的口号是 "Write,Plan, and create Infrastructure as Code", 基础架构即代码。 |
1 | # 四种操作云平台的方法 |
Terraform知识
核心文件有个2个,一个是编排文件、另一个是状态文件
- main.tf文件:是业务编排的主文件,定制了一系列的编排规则。
- terraform.tfstate:本地状态文件,相当于本地云服务状态的备份,会影响terraform的执行计划。
1 | 问:如果本地状态与云服务状态不一样时会怎样? |
安装配置
下载解压
1
2
3
4# 官网下载,找寻对应平台
https://www.terraform.io/downloads.html
# 下载解压
wget https://releases.hashicorp.com/terraform/0.12.24/terraform_0.12.24_linux_amd64.zip配置环境变量
1
2
3vim /etc/profile
export PATH=$PATH:/data/softapps
source /etc/profile基本操作命令
1
2
3
4
5
6
7
8
9# 前期初始化操作
1.创建一个工作目录,目录就像git的仓库,或者像软件开发中的workspace。
2.创建一个xx.ft文件,指定provider等信息。
3.执行terraform init命令,就像git init一样对当前目录做初始化,下载tf中的provider,并对后续的操作准备必要环境条件。
# 资源相关操作
1.terraform plan: 预览执行计划,不是必须的但是强烈建议。好明白这次要把云服务器弄成什么样子。后期版本会与apply合并成一个,所以根据自己的版本使用plan命令。
2.terraform apply:真正执行编排计划
3.terraform show:展示现在状态
4.terraform destroy:销毁云服务,将tf中的云服务清理干净
腾讯云Terraform操作
- Terraform工作流程
创建provider.tf文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15vim provider.tf
//provider.tf
provider "tencentcloud" {
secret_id = "RGID*************SG*"
secret_key = "CBS************GS"
region = "ap-shanghai"
}
# 建议将api密钥放在环境变量中配置,不建议直接把密钥写到源代码里避免泄漏。
vim /etc/profile
export TENCENTCLOUD_SECRET_ID="your_accessid"
export TENCENTCLOUD_SECRET_KEY="your_accesskey"
export TENCENTCLOUD_REGION="ap-shanghai"
# 密钥写环境变量里provider.tf文件可省略相关信息
vim provider.tf
provider "tencentcloud" {}初始化
1
2
3terraform init:初始化Terraform,erraform会自动检测 provider.tf 文件中的 provider 字段。
发送请求到Terraform官方GitHub下载最新版本腾讯云资源的模块和插件,初始化成功时当前脚本的版本信息也会显示出来。
当腾讯云脚本有新的版本发布时,可以通过 terraform init -upgrade 指令更新脚本,获取最新的应用。
- 部署腾讯云资源
1
2
3
4
5
6
7# 这里展示创建一个vpc
$ vim vpc.tf
// Create a vpc
resource "tencentcloud_vpc" "vpc_test" {
name = "vpc-test-liyk"
cidr_block = "10.0.0.0/16"
}
开通云服务器
1 | vim cvm.tf |
1 | $ vim vpc.tf |
1 | $ vim subnet.tf |
1 | $ vim route_table.tf |
1 | $ vim security_group.tf |
总结及案例
使用Terraform的Scripting、Plan、Apply和Destroy四个步骤即可轻松实现基础架构资源的全生命周期管理。下面我们以腾讯云的CVM、MySQl、VPC和Security Group服务为例,搭建一个最简单的基础架构。
- Scripting
1 | 使用HashiCorp自己的声明型语言HCL编写资源编排脚本。 |
1 | #1、Provider info |
Plan
1
2Terraform Plan功能可以很好的支持Terraform脚本执行前的检查确认工作。
Terraform基于脚本、本地状态文件(terraform.tfstate)和云平台三者的一致性来保证执行结果的准确性。Apply
1
2Terraform apply功能实现基础架构的一键部署。注意,apply前Terraform还是会强制进行资源的确认工作,即Terraform Plan工作。
Terraform的执行结果会保存在本地状态文件(terraform.tfstate)中。Destroy
1
通过以上简单地三个步骤即可实现复杂的资源部署工作,同样的,仅需要一个简单地命令即可实现资源的快速高效释放。
优势
1 | 1.更高的部署效率。缩短了资源从开发需求到部署实施的流程,同时在批量部署以及多云部署场景下,IaC可以大幅提升资源部署的效率; |