terraform命令行

terraform init

初始化工作目录, 如果不传入任何参数,那么命令会初始化当前工作目录。
一般推荐不使用DIR参数,直接在根模块的目录下运行该命令。
在添加新模块后需要执行该命令安装模块。
在执行init时,会初始化modules,会分析根模块代码以寻找Backend配置,然后使用给定的配置设定初始化Backend存储。
也会检查provider plugins,并初始化。

terraform plan

用来创建变更计划,确认变更行为如预期。
该命令可以方便地审查状态迁移的所有细节而不会实际更改现有资源以及状态文件。
如果Terraform检测不到任何变更,那么terraform plan会提示没有任何需要执行的变更。

terraform apply

默认情况下,apply会扫描当前目录下的代码文件,并执行相应的变更。

terraform destroy

用来销毁并回收所有Terraform管理的基础设施资源。
如果多人管理使用资源,不建议使用该命令销毁资源,这样会造成实际state的状态不一致。
可通过在terraform配置文件中移除对应资源后执行apply来销毁资源。

terraform show

从状态文件或是变更计划文件中打印人类可读的输出信息。
这可以用来检查变更计划以确定所有操作都是预期的,或是审查当前的状态文件。

terraform validate

可以检查目录下Terraform代码,只检查语法文件,不会访问诸如远程Backend、Provider的API等远程资源。
validate检查代码的语法是否合法以及一致,不管输入变量以及现存状态。
validate命令需要已初始化的工作目录,所有引用的插件与模块都被安装完毕。
如果只想检查语法而不想与Backend交互,可以这样初始化工作目录:terraform init -backend=false

terraform fmt

用来格式化Terraform代码文件的格式和规范。
该命令会对代码文件应用代码风格规范中的一些规定,另外会针对可读性对代码做些微调整。

terraform graph

命令可以用来生成代码描述的基础设施或是执行计划的可视化依赖图。
输出的是DOT格式的数据,可以轻松地使用GraphViz转换为图形文件:
$ terraform graph | dot -Tsvg > graph.svg
对于CentOS:
$ sudo yum install graphviz
对于Mac用户:
$ brew install graphviz

terraform output

用来提取状态文件中输出值的值。

terraform state

该命令可以用来进行复杂的状态管理操作。
状态文件的格式属于HashiCorp未公开的私有格式,所以直接修改状态文件是不适合的,可以使用terraform state命令来执行修改。

terraform state list [options] [address…]

根据address列出状态文件中相关资源的信息(如果给定了address的话)。如果没有给定address,那么所有资源都会被列出。
可以使用的可选参数有:
-state=path:指定使用的状态文件地址。默认为”terraform.tfstate”。使用远程Backend时该参数设置无效
-id=id:要显示的资源ID