基础架构自动编排(Terraform)Terraform命令行工具

举报
xcc-2022 发表于 2022/08/07 20:38:26 2022/08/07
【摘要】 terraform:官方介绍:Terraform是作为代码软件工具的开源基础结构,可提供一致的CLI工作流来管理数百个云服务。Terraform将云API编码为声明性配置文件安装:下载地址https://www.terraform.io/downloads.html选择linux 64进行下载:安装: 直接解压zip包,将解压后文件放入/url/local/bin/目录下:unzip ter...

terraform:

官方介绍:

Terraform是作为代码软件工具的开源基础结构,可提供一致的CLI工作流来管理数百个云服务。Terraform将云API编码为声明性配置文件

安装:

下载地址https://www.terraform.io/downloads.html

选择linux 64进行下载:

安装: 直接解压zip包,将解压后文件放入/url/local/bin/目录下:

unzip terraform_0.13.5_linux_amd64.zip
mv terraform /url/local/bin/

命令:

Usage: terraform [-version] [-help] <command> [args]

The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.

Common commands:
    apply              Builds or changes infrastructure
    console            Interactive console for Terraform interpolations
    destroy            Destroy Terraform-managed infrastructure
    env                Workspace management
    fmt                Rewrites config files to canonical format
    get                Download and install modules for the configuration
    graph              Create a visual graph of Terraform resources
    import             Import existing infrastructure into Terraform
    init               Initialize a Terraform working directory
    login              Obtain and save credentials for a remote host
    logout             Remove locally-stored credentials for a remote host
    output             Read an output from a state file
    plan               Generate and show an execution plan
    providers          Prints a tree of the providers used in the configuration
    refresh            Update local state file against real resources
    show               Inspect Terraform state or plan
    taint              Manually mark a resource for recreation
    untaint            Manually unmark a resource as tainted
    validate           Validates the Terraform files
    version            Prints the Terraform version
    workspace          Workspace management

All other commands:
    0.12upgrade        Rewrites pre-0.12 module source code for v0.12
    0.13upgrade        Rewrites pre-0.13 module source code for v0.13
    debug              Debug output management (experimental)
    force-unlock       Manually unlock the terraform state
    push               Obsolete command for Terraform Enterprise legacy (v1)
    state              Advanced state management

一. 文件及工作目录:

terraform定义文件需使用 .tf .tf.json 结尾, 否则不识别

-chdir 切换工作目录: terraform -chdir=environments/production apply

隐藏.terraform目录 , 缓存插件

状态数据文件: terraform.tfstate文件(如果目录仅使用默认工作空间)或terraform.tfstate.d`目录(如果目录使用多个工作空间)

terraform的操作, 对比状态基本都需要依赖 state文件, 因此state文件需要妥善保管, 最好拥有备份, 以防丢失, 虽然state文件可以重建,但是重建相对费时费力.

二.命令行解析
terraform提供框架, 使用其他云资源需要云厂商provider提供对应插件包, 在初始化目录时,会依据定义内容下载,缓存对应插件包

在初始化完成后, 在当前目录有一个隐藏.terraform目录,Terraform用来管理缓存的提供程序插件和模块,记录当前哪个 工作空间处于活动状态,并记录最后一个已知的后端配置,以防下次运行时需要迁移状态。该目录由Terraform自动管理,并在初始化期间创建

当修改了内容需要重新初始化的时候, 可以再次初始化

  1. 初始化:

初始化: terraform init

下载引用模块: terraform get

  1. plan 查看执行计划
    terraform plan命令评估Terraform配置以确定它声明的所有资源的期望状态,然后将该期望状态与使用当前工作目录和工作空间管理的实际基础结构对象进行比较。它使用状态数据来确定哪些实际对象与哪些声明的资源相对应,并使用相关的基础结构提供程序的API检查每个资源的当前状态
    pan不会对实际的资源进行更改, 只做数据和状态信息对比

  2. apply 应用配置

-compact-warnings -如果Terraform产生了没有错误的警告,则以更紧凑的形式显示警告,仅包含摘要消息。

-lock=true -锁定状态文件。

-lock-timeout=0s -重试状态锁定的持续时间。

-input=true -输入变量。

-auto-approve -直接执行,无需交互。

-no-color -禁用带有颜色的输出。

-refresh=true-在计划和应用之前,更新每种资源的状态。

-target=resource-要定位的资源地址。

-var 'foo=bar'-在Terraform配置中设置一个变量。可以多次设置此标志。

-var-file=foo-从变量文件中在Terraform配置中设置变量。如果当前目录中存在一个terraform.tfvars或任何.auto.tfvars文件,它们将被自动加载。terraform.tfvars首先加载,然后.auto.tfvars按字母顺序加载文件。由指定的任何文件将-var-file覆盖从工作目录中的文件自动设置的任何值。该标志可以多次使用。
  1. destroy 销毁资源/配置
(terraform_env) [root@VM_99_2_centos apps]# terraform destroy -h
Usage: terraform destroy [options] [DIR]

  Destroy Terraform-managed infrastructure.

Options:

  -backup=path           Path to backup the existing state file before
                         modifying. Defaults to the "-state-out" path with
                         ".backup" extension. Set to "-" to disable backup.

  -auto-approve          Skip interactive approval before destroying.

  -force                 Deprecated: same as auto-approve.

  -lock=true             Lock the state file when locking is supported.

  -lock-timeout=0s       Duration to retry a state lock.

  -no-color              If specified, output won't contain any color.

  -parallelism=n         Limit the number of concurrent operations.
                         Defaults to 10.

  -refresh=true          Update state prior to checking for differences. This
                         has no effect if a plan file is given to apply.

  -state=path            Path to read and save state (unless state-out
                         is specified). Defaults to "terraform.tfstate".

  -state-out=path        Path to write state to that is different than
                         "-state". This can be used to preserve the old
                         state.

  -target=resource       Resource to target. Operation will be limited to this
                         resource and its dependencies. This flag can be used
                         multiple times.

  -var 'foo=bar'         Set a variable in the Terraform configuration. This
                         flag can be set multiple times.

  -var-file=foo          Set variables in the Terraform configuration from
                         a file. If "terraform.tfvars" or any ".auto.tfvars"
                         files are present, they will be automatically loaded.

在销毁时需要输入yes进行确认

-auto-approve 可以自动确认,无需进行交互

terraform plan -destroy 可以预览destroy的内容

  1. console

terraform console [options]

该命令提供了一个交互式命令行控制台,用于评估和试验表达式

  1. fmt
    terraform fmt命令用于将Terraform配置文件格式化样式/格式

  2. validate
    terraform validate命令验证目录中的配置文件

  3. 0.13upgrade
    terraform 0.13upgrade [options] [dir]
    主要目的是确定模块正在使用哪些提供程序,在可能的情况下检测这些提供程序的源地址,并将此信息记录在一个 required_providers块中

  4. graph
    terraform graph [options]
    根据当前配置或执行计划输出Terraform资源的可视执行图

  5. output 输出
    terraform output [options] [NAME]

没有其他参数,output将显示根模块的所有输出。如果NAME指定了输出,则仅输出该输出的值
-json 输出为json格式
-raw输出字符串

  1. state show
    输出状态文件单个资源属性

  2. import导入资源
    terraform import [options] ADDRESS ID

导入将从ID中找到现有资源,并将其导入给定地址的Terraform状态。
ADDRESS必须是有效的资源地址。因为任何资源地址都是有效的,所以import命令可以将资源导入模块以及直接导入状态的根目录。

ID取决于要导入的资源类型。例如,对于AWS实例,实例ID(i-abcd1234)
terraform import aws_instance.foo i-abcd1234

并不是所有的资源都支持导入, 具体看provider支持情况
13. taint
标记污染

不会修改基础结构,但是会修改状态文件,以将资源标记为已污染。将资源标记为已污染后,下一个 计划将显示该资源将被销毁并重新创建,apply将实施此更改
14. untaint
取消标记污染

三. 配置:

  1. TF_LOG
    export TF_LOG=trace详细信息显示在stderr中
    禁用 export TF_LOG=off
  2. TF_LOG_PATH
    设置log的位置
    export TF_LOG_PATH=./terraform.log
    需要TF_LOG 也同时启用
  3. TF_DATA_DIR
    TF_DATA_DIR 更改Terraform保留其每个工作目录数据的位置,例如当前的远程后端配置
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。