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 输出当前工作区的名字
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。