Terraform - 命令


调试

terraform fmt

格式化当前目录的tf文件内容格式,并列出已进行格式化的文件列表

-diff选项,显示格式更改的差异
-recursive选项,在所有子目录递归执行

terraform validate

验证配置的语法有效性,检查和定位错误出现的详细位置和原因

-json选项,以json格式显示结果
默认在当前目录中查找配置

terraform console

启用交互控制台,可用于评估和验证表达式


查看

terraform providers

输出关于当前配置中使用的云提供商的信息

terraform graph

输出当前配置定义的资源关系

可以对指定的目录执行
输出为DOT格式,可以通过GraphViz生成图表然后用浏览器打开,terraform graph | dot -Tsvg > graph.svg
-draw-cycles选项,用颜色标亮依赖中循环的部分,有助于分析循环出现的问题
-module-depth选项,设置输出中模块的深度,默认情况下这是-1,显示所有
-type选项,输出依赖图内容的类型

terraform show

资源的展示,查看当前状态或者检查计划内容

展示当前state中所有被管理的资源及其所有属性值
-json选项,以json格式显示结果

terraform output

用于从状态文件中查看输出变量的值

配置output.tf文件后,执行terraform apply命令,output的内容自动显示出来
可以指定提取指定变量的值
-json选项,输出的格式为JSON对象

关键操作

terraform init

初始化包含terraform配置文件的工作目录

如果不指定目录,默认为当前目录
在空目录下,因为找不到任何配置信息,执行terraform init时会报错
可以对空目录使用-from-module=MODULE-SOURCE选项运行init,在这种情况下,指定的模块将被复制到目标目录中
-plugin-dir选项,跳过安装插件的步骤,从指定的PATH目录下加载插件   
执行时依照 *.tf文件中的配置下载相应的插件,存放在新生成的 .terraform 目录

terraform plan

对配置中所定义资源的预览,不对实际资源或状态进行更改

- 默认为当前目录执行,可以指定目录
- 预览的最后部分会输出资源变化add、change和destory的统计数目
- 预览信息前的+代表新添加的资源,当销毁资源时对应的符号会变为-;
- 更改一些参数需要重新部署资源时,该资源前面的符号为-/+;
- 在旧参数和新参数内容之间有→符号标识。
- -target选项,可用来将Terraform的注意力集中在资源的一个子集上

主要用于以下几个场景:
- 预览当前配置中定义的资源是否符合管理预期
- 如果当前配置已经存在对应的state文件,将会展示配置定义与state文件内容的diff结果,如果有变更,会将结果在下方显示出来
- 对DataSource而言,执行plan命令可直接获取并输出所要查询的资源及其属性。

terraform apply

用于实际资源的新建和变更操作

在命令运行过程中需要手动确认是否继续
可以通过--auto-approve参数来跳过人工确认的过程
创建资源的同时会在当前目录中生成一个状态文件 terraform.tfstate, 执行结果会保存这个标准的JSON 文件中。

适用于以下几种场景:
- 创建新的资源
- 通过修改模板参数来修改资源的属性
- 如果从当前模板中删除某个资源的定义,会将该资源彻底删除。可以理解为“资源的移除也是一种变更”

terraform state

用来操作状态文件

terraform state list  按照 <资源类型>.<资源名称> 的格式列出当前state中存在的所有资源
terraform state show  按照Key-Value的格式展示出特定资源的所有属性及其值,格式为 terraformstate show <资源类型>.<资源名称>
terraform state pull  获取当前state内容并展示
terraform state rm  将state中的某个资源移除,但实际上并不真正删除这个资源

terraform refresh

刷新当前State的内容,用于检测不一致的内容并更新状态文件,也就是再次拉取最新的数据写入到state文件中。

terraform import

用于将资源导入到terraform state中,进而加入到Terraform的管理中

terraform destroy

用于对资源的释放操作,谨慎使用!!!

在命令执行过程中需要手动确认的过程
可以通过--force参数来跳过手动确认过程
默认会释放当前配置中定义的所有资源
可以通过选项-target=<资源类型>.<资源名称>来指定释放特定的资源

工作区

terraform workspace

用于管理工作区

terraform workspace new [NAME]   创建一个新的工作区
terraform workspace list   列出现有的工作区,使用星号*标记指示当前工作区
terraform workspace select [NAME]   选择一个要操作的工作区
terraform workspace delete [NAME]   删除已有的工作区
terraform workspace show   输出当前工作区的名字

posted @ 2024-08-22 23:03  Anliven  阅读(40)  评论(0编辑  收藏  举报