上一篇文章开始对Terraform CLI展开细致的介绍,帮助用户实现IaC。
本文将衔接《腾讯云Terraform应用指南(二)》,继续对Terraform中的指令给出详细的使用指南,让用户全面了解Terraform的每一个可用操作,助力腾讯云Terraform应用。
下面将介绍继apply
,console
,destroy
,fmt
其他的Terraform指令使用详情,回顾前文请点击这里
terraform force-unlock
用于删除当前配置状态上的锁,并不会修改用户的基础设施。配置是否可以进入锁状态取决于后端服务的类型,有关锁定状态的更多信息点击这里。
标准语法:terraform force-unlock LOCK_ID [dir]
dir
用来指定要使用的目录,默认为当前目录 // Removes the lock on the state for the current configuration
$ terraform force-unlock LOCK_ID
terraform get
用于下载和安装配置模块。模块可用于创建轻量级的抽象,这样用户就可以根据模块的体系结构来配置基础资源,有关模块化的更多信息点击这里。
标准语法:terraform get [options] [dir]
options
用来填写get
的flagsdir
用来指定要使用的目录,默认为当前目录更新用户目录中tencentcloud
目录下的模块
// Sets the path of the root module
$ terraform get -update ~/tencentcloud
-update
- 将检查已经下载的模块是否有更新,如果有更新,则下载这些更新 // Modules are downloaded will be checked for updates
$ terraform get -update
terraform graph
用于生成配置或执行计划的可视化依赖关系信息,输出为DOT
格式,可以通过GraphViz
生成图表。
标准语法:terraform graph [options] [dir]
options
用来填写graph
的flagsdir
用来指定要输出图表信息的目录,默认为当前目录输出tencentcloud
目录下资源的依赖关系(配置了私有网络与服务器)
// Output the dependencies of resources in the current directory
$ terraform graph
可以看到服务器(CVM)与所属的安全组(security_group)和子网(subnet)的依赖关系
在tencentcloud
目录下输出test
目录中的配置资源依赖关系(test
中未配置任何资源)
// Output the dependencies of resources in the specified directory
$ terraform graph ./test
以图形的方式显示依赖关系更为直观,能够读取DOT
格式的典型程序是GraphViz
,但是也有许多web服务可以应用在这个格式上 。
利用GraphViz
对其的支持,可以创建*.svg
文件,这里命名为graph
// Dependency diagram
$ terraform graph | dot -Tsvg > graph.svg
使用浏览器将此文件打开,可以清楚的看到所有资源的拓扑图
-draw-cycles
- 用颜色标亮依赖中循环的部分,有助于分析循环出现的问题 // Highlight any cycles in the graph with colored edges
$ terraform graph -drwa-cycles | dot -Tsvg > graph.svg
-module-depth=n
设置输出中模块的深度,默认情况下这是-1
,显示所有 // Specifies the depth of modules to show in the output
$ terraform graph -module-depth=-1
-type=plan
输出依赖图内容的类型,可以指定为plan
,plan-destroy
,apply
,validate
,input
,refresh
// Sets type of graph to output
$ terraform graph -type=plan
可以看到不同类型的输出内容有所区别
terraform import
用于将已有的资源导入到terraform
中。
标准语法:terraform import [options] ADDRESS ID
options
用来填写import
的flagsADDRESS
用来指定要导入的有效地址,有关此地址的更多信息点击这这里ID
用来指点要导入资源的类型,例如腾讯云服务器的ID:ins-1234abcd
-backup=path
- 设置备份现有状态的路径,默认为-state-out
的路径,备份为.backup
文件,设置为-
时不进行备份 // Sets path to backup the existing state file
$ terraform import -backup=-
-lock=true
- 支持锁定状态时,锁定状态文件 // Lock the state file when locking is supported
$ terraform import -lock=true
有关import
指令的更多信息,请点击这里,后续文章中将详细介绍有关import
的使用方式。
terraform init
用于初始化包含terraform配置文件的工作目录。
标准语法:terraform init [options] [dir]
options
用来填写init
的flagsdir
用来指定要初始化的目录,默认为当前目录-upgrade
- 升级模块和加载插件分别作为初始化的一个步骤-lock=false
- 禁止使用状态锁默认情况下,terraform init
会假设工作目录已经包含一个配置,并初始化该配置,但是在一个空目录下,执行terraform init
时会报错,因为找不到任何配置信息(这里的空目录为test
)
用户可以选择对空目录使用-from-module=MODULE-SOURCE
选项运行init(等号后面为需要复制的资源地址),在这种情况下,指定的模块将被复制到目标目录中,例如可以将tencentcloud
目录下的资源复制到此空目录test
中并初始化
// Copy a Source Module
$ terraform init -from-module=/home/ubuntu/tencentcloud
可以看到初始化成功,并把tencentcloud
目录中的资源复制过来。这种方式的好处在于用户在新目录下配置资源时不需要将provider的信息二次填写,直接激活凭证,并把之前版本的配置作为新配置的基础。
在初始化的过程中,Terraform会根据provider的信息,加载所需插件,插件加载后的目录为.terraform/
-get-plugins=false
跳过安装插件的步骤,使用插件目录和安装在当前工作目录中的已有插件,如果所安装的插件不足以进行配置,初始化将失败 // Skips plugin installation
$ terraform init -get-plugins=false
-plugin-dir=PATH
跳过安装插件的步骤,从指定的PATH
目录下加载插件 // Loads plugins from the specified directory
$ terraform init -plugin-dir=PATH
有关init
指令的更多信息,请点击这里。
terraform output
指令用于从状态文件中提取输出变量的值。
标准语法:terraform output [options] [NAME]
options
用来填写output
的flagsNAME
用来指定要输出的变量的值,默认为根模块的所有输出配置output.tf
文件,设置要输出的内容,案例中设置查看服务器的id
和availability_zone
两个参数
// output.tf
output "cvm_az" {
value = "${tencentcloud_instance.cvm.availability_zone}"
}
output "cvm_id" {
value = "${tencentcloud_instance.cvm.id}"
}
执行terraform apply
,output
的内容自动显示出来,也可以执行terraform output
再次查看全部输出内容
// View output
$ terraform output
通过terraform output cvm_id
单独查看服务器id
// Output cvm_id
$ terraform output cvm_id
-json
- 设置输出的格式为JSON对象-no-color
- 设置后输出内容没有其他颜色标识有关output
指令的更多信息,请点击这里。
terraform plan
用于创建执行计划,以确定实现配置文件中指定的资源状态所需的操作,是一种让用户可以十分方便的检查一组更改的执行计划是否符合期望的方法,而无需对实际资源或状态进行任何更改。
标准语法:terraform plan [options] [dir]
options
用来填写plan
的flagsdir
用来指定需要创建计划的目录,默认为当前目录-destroy
- 生成一个销毁所有资源的计划-detailed-exitcode
- 返回详细的退出代码,每个退出代码对应不同的含义 `0` = 计划成功,没有更改
`1` = 错误
`2` = 计划成功,有更改
-out=path
- 设置执行计划保存的路径-refresh=true
- 在差异检查之前更新状态-target
- 用来将Terraform的注意力集中在资源的一个子集上,例如在cvm.tf
文件中设置了count=2
,一次创建2个服务器,可以通过索引针对其中一个创建计划执行terraform plan -target=tencentcloud_instance.cvm[1]
对其中一台服务器创建计划
// Create plan
$ terraform plan -target=tencentcloud_instance.cvm[1]
有关plan
指令的更多信息,请点击这里。
terraform providers
输出关于当前配置中使用的云提供商的信息。
标准语法:terraform providers [config-path]
config-path
指定配置文件的路径 // Provider information
$ terraform providers
本期的Terraform命令介绍先到这里,后面几篇文章将继续给出其他命令的使用方式。请持续关注腾讯云+社区,生态产品专栏《腾讯云Terraform应用指南》系列,生态产品团队将持续帮助用户快速入门,熟练掌握Terraform应用技巧。
“Write, Plan, and create Infrastructure as Code" 让每一个腾讯云用户高效、快捷的部署资源。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。