上一篇文章中,我们已经成功安装、配置了腾讯云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" 让每一个腾讯云用户高效、快捷的部署资源。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。