上一篇文章中,我们已经成功安装、配置了腾讯云Terraform应用环境,并实践了利用Terraform简单易用的CLI在虚拟网络(VPC)下部署腾讯云服务器(CVM)。以IaC的方式编排云资源,不仅提高了部署速度和效率,还保证了配置的一致性,节约成本。
既然是IaC,那就要熟练的掌握应用过程中需要用到的指令,本文及后面的几篇文章将向大家详细介绍Terraform Commands,帮助用户熟悉每一个命令,助力腾讯云Terraform应用。
Terraform是通过一个非常容易使用的命令行界面(CLI)来控制的,并且有且仅有一个命令行程序:terraform进行管理。输入terraform,可以看到当前版本可用的子命令列表,如apply,plan等。同时,terraform也响应-h和help,输入terraform -h或terraform help也可以查看所有可用命令。
查看Terraform版本和Provider的接口版本信息,比对官网和腾讯云Terraform官方GitHub所提供的最新版本,以便随时更新
Terraform引用了一些环境变量来控制部分功能,这些环境变量都不是必需的,但是可以改变一些Terraform的默认行为,帮助用户适配更多应用场景
操作日志是重要的运维信息来源,用户可以通过设置日志类型TF_LOG和日志保存路径TF_LOG_PATH,将详细的日志打印到stderr,以获取调试信息。TF_LOG支持五种可用值,TRACE,DEBUG,INFO,WARN,ERROR,分别代表五种不同的日志级别,其中TRACE表示最详细的日志。
// Config log
$ export TF_LOG=Debug
$ export TF_LOG_PATH=./terraform.log有关日志的更多信息请点击这里
variable是Terraform重要的配置文件类型之一,通过对变量的集中管理,用户可以在资源文件中直接引用变量名进行赋值
创建variable.tf文件,配置可用区参数的默认值ap-guangzhou-1
// variable.tf
variable "default_az" {
type = string
default = "ap-guangzhou-1"
}这样在资源配置文件中,availability_zone参数可以直接调用var.default_az
也可以利用TF_VAR_name把变量设置在环境变量中
// Config variable
$ export TF_VAR_region=ap-guangzhou-1配置TF_INPUT,可以关闭对未指定值的变量的提示。将刚才的variable.tf中设置的参数删除
执行Terraform指令,会要求写入参数值
设置TF_INPUT为false或0,再次执行指令,系统报错:未指定变量的值
// Config input
$ export export TF_INPUT=0用户可以通过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"本节将详细介绍每一个具体的指令,包括如何使用和可能遇到的问题
terraform apply 用于应用所需的更改,以达到所需的配置状态,同时执行结果会保存在本地状态文件terraform.tfstate中。
标准语法:terraform apply [options] [dir-or-plan]
options用来填写apply的flagsdir-or-plan用来指定配置计划或计划的路径在当前目录只配置provider.tf,不添加任何资源文件,执行terraform apply,显示没有任何资源被部署
在当前目录执行terraform apply ./tencentcloud命令,创建在/tencentcloud目录的资源文件将被部署
// Deploy the configuration plan under the tencentcloud directory
$ terraform apply ./tencentcloud-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中
有关apply指令的更多信息,请点击这里
terraform console提供了一个用于评估和验证表达式的交互控制台。
标准语法:terraform console [options] [dir]
options用来填写console的flagsdir用来指定要使用的目录,默认为当前目录 // Evaluating and experimenting with expressions
$ echo "1 + 2" | terraform console有关console指令的更多信息,请点击这里
terraform destroy用于销毁terraform管理的基础设施。
标准语法:terraform destroy [options] [dir]
options用来填写destroy的flagsdir用来指定要使用的目录,默认为当前目录-auto-approve - 同apply命令中的-auto-approve,跳过销毁计划前的审批过程,直接销毁资源 // Destroy confirmation will not be shown
$ terraform destroy -auto-approve有关destroy指令的更多信息,请点击这里
terraform fmt用于将terraform配置文件重写为规范格式和样式,确保文件的一致性。在升级Terraform之后,建议您在模块上预先运行Terraform fmt,使之前的文件适配新版本。
标准语法:terraform fmt [options] [dir]
options用来填写fmt的flagsdir用来指定要使用的目录,默认为当前目录-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" 让每一个腾讯云用户高效、快捷的部署资源。