首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云Terraform应用指南(一)

腾讯云Terraform应用指南(一)

原创
作者头像
生态产品团队
修改于 2019-08-02 03:47:01
修改于 2019-08-02 03:47:01
20.3K5
举报
文章被收录于专栏:生态产品生态产品

摘要

《腾讯云Terraform应用指南》系列文章旨在帮助腾讯云用户借助Terraform,轻松使用简单模板语言来定义、预览和部署云基础结构,让用户通过IaC,基于腾讯云的OpenAPI一键创建或销毁多路资源。利用Terraform这把利器,帮助用户节约资源开销,提高从部署到运维的自动化生产力。

作为该系列的第一篇文章,本文将介绍使用 Terraform 管理腾讯云资源的必要步骤。

一、 安装Terraform


NOTES 由于Terraform使用的过程中需要对文件进行添加、改写或删除等操作,为了保证安全及部署过程的鲁棒,我们建议开发者避免在本地使用Terraform对腾讯云资源进行管理,转而在腾讯云服务器进行相关操作更为便捷和可靠,实现业务百分百上云,享受腾讯云给您带来的优质体验。

下面是在腾讯云服务器上配置安装Terraform的详细步骤:

1、 下载Terraform

官方提供了最新版本的Terraform可用下载,用户可以选择适合自己开发环境的下载包。若要安装其它的Terraform版本,请自行更改下载链接。

输入下载及安装命令行

代码语言:txt
AI代码解释
复制
    // download terraform
    $ wget https://releases.hashicorp.com/terraform/0.12.5/terraform_0.12.5_linux_amd64.zip
下载Terraform
下载Terraform
代码语言:txt
AI代码解释
复制
    // Install terraform
    $ unzip terraform_0.12.5_linux_amd64.zip
安装Terraform
安装Terraform

2、 配置环境变量

新建目录downloads,将安装好的terraform文件保存在该目录下

代码语言:txt
AI代码解释
复制
    // Move terraform
    $ mkdir downloads
    $ mv terraform downloads/
将Terraform保存在自定义目录下
将Terraform保存在自定义目录下

进入配置文件~/.profile添加Terraform的环境变量

代码语言:txt
AI代码解释
复制
    $ vim ~/.profile

    // Add terraform PATH
    export PATH="$PATH:~/downloads"
添加环境变量
添加环境变量

重新加载~/.profile文件

代码语言:txt
AI代码解释
复制
    $ source ~/.profile

查看Terraform当前版本

代码语言:txt
AI代码解释
复制
    $ terraform -version
完成环境变量的配置
完成环境变量的配置

有关如何在 Windows 上设置环境变量的说明,请这点击这里

二、 使用Terraform管理腾讯云


下面是Terraform管理腾讯云资源的具体方法:

1、 Terraform工作流程

利用Terraform部署腾讯云资源的结构简图

腾讯云Terraform工作流简图
腾讯云Terraform工作流简图

① 一次性配置 provider 文件以支持Tencent Cloud的OpenAPI

② 使用Terraform配置语法生成 .tf 资源文件

③ 使用CLI实现腾讯云资源的管理

Terraform会将整个资源部署情况更新在 *.tf.state 文件中,让用户在前端控制台和后端平台都清晰的把控自己的云资源。

2、 配置腾讯云provider文件

登录腾讯云,在访问管理中选择API秘钥管理

腾讯云控制台
腾讯云控制台

新建秘钥,获得Secret_Id和Secret_Key

新建秘钥
新建秘钥

在新目录下创建 provider.tf 文件,填入秘钥和区域信息

代码语言:txt
AI代码解释
复制
    $ vim provider.tf
    
    //provider.tf
    provider "tencentcloud" {
        secret_id  = "AKID****************"
        secret_key = "QdcM***************"
        region     = "ap-hongkong"
    }
provider.tf
provider.tf

保存该文件,执行 terraform init 初始化Terraform。此步骤,Terraform会自动检测 provider.tf 文件中的 provider 字段,发送请求到Terraform官方GitHub下载最新版本腾讯云资源的模块和插件,初始化成功时当前脚本的版本信息也会显示出来。

代码语言:txt
AI代码解释
复制
    // Initialize
    $ terraform init
初始化成功
初始化成功

当腾讯云脚本有新的版本发布时,可以通过 terraform init -upgrade 指令更新脚本,获取最新的应用。

同时,可以通过 terraform plan 预览将要完成的操作,准备好创建资源后,可以通过 terraform apply 进行资源部署,更多有关Terraform CLI的信息请点击这里

NOTES 将秘钥直接填入到.tf文件中是十分不安全的,在多用户共同管理资源时,不建议把腾讯云API 的秘钥直接写到源代码里,以免一不小心更新到公开的版本中,造成安全风险。

腾讯云提供了另一种更为安全可靠的方式,把秘钥信息放在环境变量中配置

代码语言:txt
AI代码解释
复制
    // Configure the secret key in the environment path
    $ export TENCENTCLOUD_SECRET_ID="your_fancy_accessid"
    $ export TENCENTCLOUD_SECRET_KEY="your_fancy_accesskey"
    $ export TENCENTCLOUD_REGION="ap-hongkong"

这样在 provider.tf 文件中就可以省略掉相关信息

代码语言:txt
AI代码解释
复制
    $ vim provider.tf
    
    // provider.tf
    provider "tencentcloud" {}

对于秘钥信息的配置,腾讯云会持续更新更加安全可靠的方法,致力于保护腾讯云用户的隐私安全。

3、 部署腾讯云资源

这里提供一个在私有网络(VPC)下创建腾讯云服务器(CVM)的简单用例

创建服务器实例资源文件

代码语言:txt
AI代码解释
复制
    $ 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
    }
cvm.tf
cvm.tf

这里可以看到,该服务器关联的安全组、私有网络和子网后面并没有直接填写具体参数信息,可以通过调用相关资源tf文件中的 id 字段内容实现具体的资源分配。本例中调用的就是安全组tf文件: sg_test ,私有网络tf文件: vpc_test路由表tf文件: route_table.tf和子网tf文件: subnet_test ,具体内容分别如下

创建私有网络资源文件

代码语言:txt
AI代码解释
复制
    $ vim vpc.tf
    
    // Create a vpc
    resource "tencentcloud_vpc" "vpc_test" {
        name = "vpc-test"
        cidr_block = "10.0.0.0/16"
    }

创建子网资源文件

代码语言:txt
AI代码解释
复制
    $ 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}"
    }

创建路由表资源文件

代码语言:txt
AI代码解释
复制
    $ vim route_table.tf
     
    // Create a route table
    resource "tencentcloud_route_table" "rtb_test" {
        name = "rtb-test"
        vpc_id = "${tencentcloud_vpc.vpc_test.id}"
    }

创建安全组和安全规则资源文件

代码语言:txt
AI代码解释
复制
    $ 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 plan
terraform plan

这里参数前面的+代表新添加的资源,当销毁资源时,参数前面对应的符号会变为-;更改一些参数需要重新部署资源时,该资源前面的符号为-/+;在旧参数和新参数内容之间有符号标识

资源更改
资源更改

执行 terraform apply 进行资源创建

询问是否创建资源
询问是否创建资源

输入 yes ,显示成功创建资源

创建资源成功
创建资源成功

回到控制台,可以看到刚刚部署的资源已经生效

控制台同步创建操作
控制台同步创建操作

执行 terraform destroy 进行资源销毁

询问是否销毁资源
询问是否销毁资源

输入 yes ,显示成功销毁资源

销毁资源成功
销毁资源成功

控制台中也同步了销毁操作

控制台同步销毁操作
控制台同步销毁操作

三、 写在最后


至此,使用Terraform管理腾讯云的准备工作都已完成,请持续关注腾讯云+社区,生态产品专栏《腾讯云Terraform应用指南》系列,生态产品团队将持续帮助用户快速入门,熟练掌握Terraform应用技巧。

“Write, Plan, and create Infrastructure as Code" 让每一个腾讯云用户高效、快捷的部署资源。

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

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

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

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

评论
登录后参与评论
5 条评论
热度
最新
Error : Failed to query available provider packagesterraform。自v0.13后就交给provider自己维护。参考文档:https://cloud.tencent.com/developer/article/1792475
Error : Failed to query available provider packagesterraform。自v0.13后就交给provider自己维护。参考文档:https://cloud.tencent.com/developer/article/1792475
回复回复点赞举报
创建实例不是要钱的么?可以直接这样子创建实例?
创建实例不是要钱的么?可以直接这样子创建实例?
11点赞举报
肯定要先充值的,不然会报错。
肯定要先充值的,不然会报错。
回复回复点赞举报
好文,学习一下
好文,学习一下
回复回复点赞举报
清晰明了,学习了
清晰明了,学习了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Terraform系列一腾讯云CVM相关简单创建
记得2019左右就看到过Terraform系列的文章和书籍,当时所有的业务都上云了管理也很是方便,看了一眼就没有作过多的研究。但本着对技术发展的前瞻敏锐性, 还是觉得这个东西是会火起来的。正巧最近泽阳大佬devops训练营https://www.yuque.com/devopsvip穿插上了Terraform!个人又开始体验了一把......
对你无可奈何
2022/03/30
4.2K5
如何高效的进行腾讯云上的资源编排,一起来聊一聊Terraform
“腾讯云IaC最佳实践”系列文章希望通过介绍Terraform、Chef和Ansible等生态产品工具及相关案例,使用户能够更好地在腾讯云上实践IaC,为腾讯云用户提供增值服务。本文是“腾讯云IaC最佳实践”系列文章的第1篇。
生态产品团队
2019/07/22
18.7K4
怎样用terraform管理现存资源
通过阅读前面几篇文章,希望大家了解了基础架构及代码的基本概念,以及如何使用packer和terraform在腾讯云上进行新云资源的高效编排。但是在现实世界里,云管理团队还要管理以前那些没有通过terraform管理的资源,本文会作出一个通用流程,方便大家使用。
刘宇雷
2019/08/21
3.4K0
怎样用terraform管理现存资源
windows terraform创建云服务器
terraform跨平台、跟多家公有云都有对接,之前我写过一篇linux平台terraform创建云服务器的文档,这里介绍windows平台terraform创建云服务器。
Windows技术交流
2024/12/20
9670
terraform 入门:创建腾讯云 k8s 集群
本文适合不喜欢在浏览器中点点点,并刚刚入门或者想要入门 terraform 的小伙伴。
谢正伟
2021/08/05
4.2K0
terraform 入门:创建腾讯云 k8s 集群
通过terraform快速创建腾讯云基础资源
Terraform是一个IT基础架构自动化编排工具,可以用代码来管理维护IT资源。它编写了描述云资源拓扑的配置文件中的基础结构,例如虚拟机、存储账户和网络接口。Terraform的命令行接口(Command Line Interface,CLI)提供一种简单机制,用于将配置文件部署到腾讯云或其他任意支持的云上,并对其进行版本控制。
Vicwan
2020/03/12
8.4K0
Terraform系列二腾讯云CVM进一步相关玩法
紧接Terraform系列一腾讯云CVM相关简单创建。准备围绕着cvm先熟悉一下基本的流程。比如:系统盘扩容,挂载数据盘,帐号密钥ssh-key,绑定公网ip.研究一下官方文档体验一下!
对你无可奈何
2022/03/31
2.6K1
terraform简单的开始-vpc cvm创建
一个 resource 块包含 resource 关键字、资源类型、资源名和资源块体三部分。这是terraform中创建资源常用的格式!
对你无可奈何
2023/09/20
7150
如何2分钟用terraform创建腾讯云CLB+CVM+Mysql资源?
大家好,随着腾讯云业务资源不断完善,公司业务不断增长,需要使用的资源和运维配置也越来越多,为大大降低资源配置复杂度,以及释放运维人员配置精力,近期发现国际多家云厂商和海外多云资源纳管SaaS平台,开始使用【Terraform】中间件生态产品,这个产品中间件通过创建一个prider虚拟中间层,实现上层业务命令转换到底层云平台的业务指令,阿里云的云架构图设计资源,就是通过Terraform中间件来完成自动业务架构创建使用的。
TCS-F
2024/05/14
4880
如何2分钟用terraform创建腾讯云CLB+CVM+Mysql资源?
linux terraform环境配置(创建cvm的例子)
terraform依赖go环境,go环境配置参考https://cloud.tencent.com/developer/article/1836994
Windows技术交流
2021/12/07
1.4K0
TF在腾讯云创建mysql跨可用区只读实例
vpc、subnet、安全组等参考官方文档创建,主实例用广州地域的,只读实例使用上海的
arunma
2025/02/28
3070
TF在腾讯云创建mysql跨可用区只读实例
腾讯云Terraform应用指南(二)
上一篇文章中,我们已经成功安装、配置了腾讯云Terraform应用环境,并实践了利用Terraform简单易用的CLI在虚拟网络(VPC)下部署腾讯云服务器(CVM)。以IaC的方式编排云资源,不仅提高了部署速度和效率,还保证了配置的一致性,节约成本。
生态产品团队
2019/08/02
5.9K0
腾讯云支持 Terraform 开发实践
这篇文章从系统架构开始,到核心库讲解,到实践开发,再到单元测试,比较完整的描述了支持Terraform的开发全过程。
Techeek
2018/03/20
21.1K11
腾讯云支持 Terraform 开发实践
腾讯云Terraform应用指南(三)
本文将衔接《腾讯云Terraform应用指南(二)》,继续对Terraform中的指令给出详细的使用指南,让用户全面了解Terraform的每一个可用操作,助力腾讯云Terraform应用。
生态产品团队
2019/08/07
5.8K0
Terraform开启本地日志跟踪以及问题自查
|本文以tencentcloud terraform 为例,介绍使用terraform CLI过程中如何开启本地日志跟踪以及一些通用问题的自查方法
Sesede_被告警吵醒
2021/02/26
2.1K0
Terraform开启本地日志跟踪以及问题自查
Terraform 入门
为了使Terraform能够对你的AWS账户进行直接操作,需要将环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
yeedomliu
2021/12/10
2.9K0
Terraform 入门
Terraform—基础设施即代码(Iac)
IAC(基础设施即代码),是指通过编写代码来进行基础设施的定义,部署,更新与销毁。让基础设施的变更同代码一样,具有版本控制的能力,同时可以通过codeReview 进行审阅,保障其可靠性与一致性。只需要做好基础设施可变与不可变部分的划分,即可通过流水线工具及相关策略对可变部分进行动态调整,完成基础设施的自动化编排与管理。
tunsuy
2023/10/23
5770
Terraform—基础设施即代码(Iac)
使用 Packer 创建镜像
HashiCorp 是一家国外基础软件提供商,主要开发支持多云部署的开源工具,旗下有6 款主流软件,Terraform、Consul、Vagrant、Nomad、Vault、Packer
Windows技术交流
2023/06/16
9570
Terraform语法入门
HCL是Terraform的配置语言,它是HashiCorp发明的一种声明式语言,能够以更加简短和人性化的方式来描述资源。本文主要介绍HCL配置语言的基本语法及使用,语法采用当前最新版本0.12。
oliverpei
2020/03/17
8.7K2
Terraform系列三腾讯云CVM中的玩法
紧接:Terraform系列一腾讯云CVM相关简单创建,Terraform系列二腾讯云CVM进一步相关玩法。cvm创建完成,准备初始化一下系统,挂载一下数据盘,在cvm中安装一些软件,做一些简单的配置!
对你无可奈何
2022/04/03
4K1
相关推荐
Terraform系列一腾讯云CVM相关简单创建
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档