前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云Terraform应用指南(一)

腾讯云Terraform应用指南(一)

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

摘要

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

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

一、 安装Terraform


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

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

1、 下载Terraform

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

输入下载及安装命令行

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

2、 配置环境变量

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

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

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

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

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

重新加载~/.profile文件

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

查看Terraform当前版本

代码语言:txt
复制
    $ 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
复制
    $ 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
复制
    // Initialize
    $ terraform init
初始化成功
初始化成功

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

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

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

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

代码语言:txt
复制
    // 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
复制
    $ vim provider.tf
    
    // provider.tf
    provider "tencentcloud" {}

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

3、 部署腾讯云资源

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

创建服务器实例资源文件

代码语言:txt
复制
    $ 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
复制
    $ vim vpc.tf
    
    // Create a vpc
    resource "tencentcloud_vpc" "vpc_test" {
        name = "vpc-test"
        cidr_block = "10.0.0.0/16"
    }

创建子网资源文件

代码语言:txt
复制
    $ 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
复制
    $ 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
复制
    $ 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摘要
  • 一、 安装Terraform
    • 1、 下载Terraform
      • 2、 配置环境变量
      • 二、 使用Terraform管理腾讯云
        • 1、 Terraform工作流程
          • 2、 配置腾讯云provider文件
            • 3、 部署腾讯云资源
            • 三、 写在最后
            相关产品与服务
            私有网络
            私有网络(Virtual Private Cloud,VPC)是基于腾讯云构建的专属云上网络空间,为您在腾讯云上的资源提供网络服务,不同私有网络间完全逻辑隔离。作为您在云上的专属网络空间,您可以通过软件定义网络的方式管理您的私有网络 VPC,实现 IP 地址、子网、路由表、网络 ACL 、流日志等功能的配置管理。私有网络还支持多种方式连接 Internet,如弹性 IP 、NAT 网关等。同时,您也可以通过 VPN 连接或专线接入连通腾讯云与您本地的数据中心,灵活构建混合云。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档