美文网首页Terraform
Terraform (三):常用命令

Terraform (三):常用命令

作者: WanjinYoung | 来源:发表于2020-03-10 16:47 被阅读0次

参考文档:阿里云栖社区
官方文档:Terraform官网

1. terraform plan:资源的预览

  • 预览当前模板中定义的资源是否符合管理预期
  • 如果当前.tf模板已经存在对应的state文件,那么 plan 命令将会展示.tf模板定义与state文件内容的diff结果,如果有变更,将会展示结果并在下方显示出来,包括创建,更新,删除等计划。
  • 对DataSource而言,执行 plan 命令,即可直接获取并输出所要查询的资源及其属性
------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # resourcecenter_networking_vpc_v1.vpc will be created
  + resource "resourcecenter_networking_vpc_v1" "vpc" {
      + admin_state_up = true
      + alias          = "这是一个网络"
      + description    = "des "
      + id             = (known after apply)
      + name           = "test-vpc"
      + recycle        = false
    }

Plan: 1 to add, 0 to change, 0 to destroy.

------------------------------------------------------------------------

2. terraform apply:资源的新建和变更

apply可以理解为计划的执行步骤,用于实际资源的新建和变更操作,该命令需要输入yes手动确认,也可以通过 --auto-approve 参数来跳过确认步骤。apply用于:

  • 创建新的资源
  • 通过修改模板参数来修改资源的属性
  • 如果从当前模板中删除某个资源的定义, apply 命令会将该资源彻底删除。可以理解为“资源的移除也是一种变更” ,效果等价对单个资源执行destroy.
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # resourcecenter_networking_vpc_v1.vpc will be created
  + resource "resourcecenter_networking_vpc_v1" "vpc" {
      + admin_state_up = true
      + alias          = "这是一个网络"
      + description    = "des "
      + id             = (known after apply)
      + name           = "test-vpc"
      + recycle        = false
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

resourcecenter_networking_vpc_v1.vpc: Creating...
resourcecenter_networking_vpc_v1.vpc: Still creating... [10s elapsed]

3. terraform show:资源的展示

show 命令用于展示当前state中所有被管理的资源及其所有属性值

4. terraform destroy:资源的释放

destroy 命令用于对资源的释放操作,需要手动yes确认操作,也可以通过--force参数来跳过
terraform destroy 默认会释放当前.tf模板中定义的所有资源,如果只想释放其中某个特定的资源,可以通过参数 -target=<资源类型>.<资源名称> 来指定

5. terraform import:资源的导入

import 命令用于将非编排创建的云资源导入到terraform state中,进而加入到Terraform的管理体系中(可理解为纳管),常用场景:

  • 将从未使用Terraform的系统升级为Terraform管理,对已有的资源进行同步
  • 在不影响资源正常使用的前提下,重构资源模板中的资源定义
  • 版本升级对于已有资源的同步

6. terraform taint: 标记资源为“被污染”

taint 命令用于把某个资源标记为“被污染”状态,当再次执行 apply 命令时,这个被污染的资源将会被先释放,然后再创建一个新的,相当于对这个特定资源做了先删除后新建的操作,对于参数设置ForceNew:true的资源,具有相同的操作。
命令的详细格式为: terraform taint <资源类型>.<资源名称>

7. terraform untaint:取消“被污染”标记

untaint 命令是 taint 的逆向操作,用于取消“被污染”标记,使其恢复到正常的状态。命令的详细格式和 taint 类似为: terraform untaint <资源类型>.<资源名称>

8. terraform output:打印出参及其值

如果在模板中显示定义了output参数,那么这个output的值将在 apply 命令之后展示,但 plan 命令并不会展示,如果想随时随地快速查看output的值,可以直接运行命令 terraform output.

9. terraform state list:列出当前state中的所有资源

state list按照 <资源类型>.<资源名称>的格式列出当前state中存在的所有资源(包括datasource

10. terraform state show:展示某一个资源的属性

state show 命令按照Key-Value的格式展示出特定资源的所有属性及其值,命令的完整格式为 terraform state show <资源类型>.<资源名称>

11.terraform state pull:查看当前state内容并展示

state pull 命令用于原样展示当前state文件数据,类似与Shell下的cat命令

12. terraform state rm:移除特定的资源

state rm命令用于将state中的某个资源移除,但是实际上并不会真正删除这个资源,命令格式为: terraform state rm <资源类型>.<资源名称> ,在运行apply之后会创建一个与移除资源一摸一样的资源,对于移除的资源可以使用import重新导入。

13.terraform state mv:变更特定资源的存放地址

如果想调整某个资源所在的state文件,可以通过 state mv 命令来完成,类似于Shell下的mv命令,这个命令的使用有多种选项,可以通过命令terraform state mv --help来详细了解。terraform state mv --state=./terraform.tfstate --state-out=<target path>/terraform-target.tfstate <资源类型>.<资源名称A> <资源类型>.<资源名称B> .

14. terraform refresh:刷新当前state

refresh 命令可以用来刷新当前state的内容,即再次调用API并拉取最新的数据写入到state文件中

15. terraform init:初始化加载模块

init 用来初始化加载所需的模块,包括providerprovisionermodule等.

16.terraform graph:输出当前模板定义的资源关系图

每个模板定义的资源之间都存在不同程度的依赖关系,可以使用命令 terraform graph查看依赖图,还可以通过命令terraform graph | dot -Tsvg > graph.svg直接导出为一张图片(需要安装 graphvizbrew install graphviz

17. terraform validate:验证模板语法是否正确

Terraform 模板的编写需要遵循其自身定义的一套简单的语法规范,编写完成后,如果想要检查模板是否存在语法错误或者在运行 planapply 命令的时候报语法错误,可以通过执行命令 terraform validate 来检查和定位错误出现的详细位置和原因。

Help 命令:terraform terraform --help


Ref :
reference1

相关文章

网友评论

    本文标题:Terraform (三):常用命令

    本文链接:https://www.haomeiwen.com/subject/szgwdhtx.html