腾讯云Terraform应用指南(二)

摘要

上一篇文章中,我们已经成功安装、配置了腾讯云Terraform应用环境,并实践了利用Terraform简单易用的CLI在虚拟网络(VPC)下部署腾讯云服务器(CVM)。以IaC的方式编排云资源,不仅提高了部署速度和效率,还保证了配置的一致性,节约成本。

既然是IaC,那就要熟练的掌握应用过程中需要用到的指令,本文及后面的几篇文章将向大家详细介绍Terraform Commands,帮助用户熟悉每一个命令,助力腾讯云Terraform应用。

一、Terraform Commands Overview


Terraform是通过一个非常容易使用的命令行界面(CLI)来控制的,并且有且仅有一个命令行程序:terraform进行管理。输入terraform,可以看到当前版本可用的子命令列表,如applyplan等。同时,terraform也响应-hhelp,输入terraform -hterraform help也可以查看所有可用命令。

Terraform Commands

查看Terraform版本和Provider的接口版本信息,比对官网腾讯云Terraform官方GitHub所提供的最新版本,以便随时更新

查看当前版本信息

二、Environment Variables


Terraform引用了一些环境变量来控制部分功能,这些环境变量都不是必需的,但是可以改变一些Terraform的默认行为,帮助用户适配更多应用场景

1、日志

操作日志是重要的运维信息来源,用户可以通过设置日志类型TF_LOG和日志保存路径TF_LOG_PATH,将详细的日志打印到stderr,以获取调试信息。TF_LOG支持五种可用值,TRACEDEBUGINFOWARNERROR,分别代表五种不同的日志级别,其中TRACE表示最详细的日志。

    // Config log
    $ export TF_LOG=Debug
    $ export TF_LOG_PATH=./terraform.log
设置日志级别和保存路径
查看日志文件
日志详细内容

有关日志的更多信息请点击这里

2、变量

variable是Terraform重要的配置文件类型之一,通过对变量的集中管理,用户可以在资源文件中直接引用变量名进行赋值

创建variable.tf文件,配置可用区参数的默认值ap-guangzhou-1

    // variable.tf
    variable "default_az" {
        type = string
       default = "ap-guangzhou-1"
    }
variable.tf

这样在资源配置文件中,availability_zone参数可以直接调用var.default_az

创建一个腾讯云服务器

也可以利用TF_VAR_name把变量设置在环境变量中

    // Config variable
    $ export TF_VAR_region=ap-guangzhou-1

配置TF_INPUT,可以关闭对未指定值的变量的提示。将刚才的variable.tf中设置的参数删除

删除所有参数

执行Terraform指令,会要求写入参数值

提示为variable赋值

设置TF_INPUTfalse0,再次执行指令,系统报错:未指定变量的值

    // Config input
    $ export export TF_INPUT=0
报错:未指定变量的值

3、CLI Config File

用户可以通过CLI的配置文件对CLI进行一些设置,适用于所有Terraform的工作目录,与资源配置文件是区分开的。

这个配置文件存放的位置根据主机环境的不同有所差异,Linux和Mac系统中文件必须命名为.terraformrc,并直接放在相关用户的主目录中。Windows用户相关信息请查看这里

配置文件中支持的参数有:

① 是否开启更新与安全检查:disable_checkpoint

② 允许更新与安全检查,但禁止使用匿名id删除警告消息:disable_checkpoint_signature

③ 启用插件缓存,以字符串的形式指定插件缓存目录的位置:plugin_cache_dir

④ Terraform企业版凭证:credentials

可以在环境变量中配置CLI Config File的位置

    // Location of the Terraform CLI configuration file
    $ export TF_CLI_CONFIG_FILE="$HOME/.terraformrc-custom"

三、Commands Introduction Episode 1


本节将详细介绍每一个具体的指令,包括如何使用和可能遇到的问题

1、apply

terraform apply 用于应用所需的更改,以达到所需的配置状态,同时执行结果会保存在本地状态文件terraform.tfstate中。

标准语法:terraform apply [options] [dir-or-plan]

  • options用来填写apply的flags
  • dir-or-plan用来指定配置计划或计划的路径

dir-or-plan

在当前目录只配置provider.tf,不添加任何资源文件,执行terraform apply,显示没有任何资源被部署

在当前目录执行apply操作

在当前目录执行terraform apply ./tencentcloud命令,创建在/tencentcloud目录的资源文件将被部署

    // Deploy the configuration plan under the tencentcloud directory
    $ terraform apply ./tencentcloud
在当前目录执行

options

  • -backup=path - 备份文件的路径,设置为-时表示禁用

默认情况下备份文件自动保存在当前目录的.backup中,为-backup赋值-时,将不再保存备份文件

    // Disabled by setting to "-"
    $ terraform apply -backup=-
默认保存的备份文件

删除terraform.tfstate.backup,执行terraform apply -backup=-,不再自动保存备份

不再自动保存备份文件
  • -auto-approve - 跳过部署计划前的审批过程,直接创建资源
    // Skip interactive approval of plan before applying
    $ terraform apply -auto-approve
跳过交互环节直接创建
  • -no-color - 禁用输出时字符的颜色
    // Disables output with coloring
    $ terraform apply -no-color
带有颜色的输出
变成默认字符颜色
  • -parallelism=n - 限制并发操作的数量,默认是10
    // Limit the number of concurrent operation
    $ terraform apply -parallelism=5
  • -refresh=true - 在计划和应用之前,更新每一个资源的状态
    // Update the state for each resource prior to planning and applying
    $ terraform apply -refresh=true
  • -state=path - 状态文件的路径,默认为terraform.tfstate
    // Path to the state file
    $ terraform apply -state=./test_state
默认保存的状态文件

删除terraform.tfstate,执行terraform apply -state=./test_state,将状态文件保存在当前文件夹下的test_state

状态文件被保存在test_state中

有关apply指令的更多信息,请点击这里

2、console

terraform console提供了一个用于评估和验证表达式的交互控制台。

标准语法:terraform console [options] [dir]

  • options用来填写console的flags
  • dir用来指定要使用的目录,默认为当前目录
    // Evaluating and experimenting with expressions
    $ echo "1 + 2" | terraform console
计算表达式

有关console指令的更多信息,请点击这里

3、destroy

terraform destroy用于销毁terraform管理的基础设施。

标准语法:terraform destroy [options] [dir]

  • options用来填写destroy的flags
  • dir用来指定要使用的目录,默认为当前目录

options

  • -auto-approve - 同apply命令中的-auto-approve,跳过销毁计划前的审批过程,直接销毁资源
    // Destroy confirmation will not be shown
    $ terraform destroy -auto-approve

有关destroy指令的更多信息,请点击这里

4、fmt

terraform fmt用于将terraform配置文件重写为规范格式和样式,确保文件的一致性。在升级Terraform之后,建议您在模块上预先运行Terraform fmt,使之前的文件适配新版本。

标准语法:terraform fmt [options] [dir]

  • options用来填写fmt的flags
  • dir用来指定要使用的目录,默认为当前目录

options

  • -list=false - 不列出格式不一致的文件
    // Don't list the files containing formatting inconsistencies
    $ terraform fmt -list=false
不列出格式不一致的文件
  • -diff - 显示格式更改的差异
    // Display diffs of formatting changes
    $ terraform fmt -diff

有关fmt指令的更多信息,请点击这里

四、写在最后


本期的Terraform命令介绍先到这里,后面几篇文章将继续给出其他命令的使用方式。请持续关注腾讯云+社区,生态产品专栏《腾讯云Terraform应用指南》系列,生态产品团队将持续帮助用户快速入门,熟练掌握Terraform应用技巧。

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

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券