terraform 安装及命令

Terraform
Terraform是用于安全有效地构建,更改和版本控制基础结构的工具。Terraform可以管理现有和流行的服务提供商以及定制的内部解决方案。
配置文件向Terraform描述了运行单个应用程序或整个数据中心所需的组件。Terraform生成执行计划,以描述达到预期状态所需执行的操作,然后执行该计划以构建所描述的基础结构。随着配置的更改,Terraform能够确定更改的内容并创建可以应用的增量执行计划。
Terraform可以管理的基础结构包括低级组件,例如计算实例,存储和网络,以及高级组件,例如DNS条目,SaaS功能等。
Terraform的主要功能是:

  • 基础架构即代码, 使用高级配置语法描述基础结构。这样就可以像对待任何其他代码一样对数据中心的蓝图进行版本控制和处理。此外,基础架构可以共享和重复使用。
  • 执行计划, Terraform有一个“计划”步骤,在其中生成执行计划。执行计划将显示Terraform在您调用apply时将执行的操作。这样可以避免Terraform操纵基础结构时出现任何意外。
    -资源图, Terraform构建所有资源的图形,并并行化所有非依赖资源的创建和修改。因此,Terraform尽可能高效地构建基础架构,并且操作员可以洞悉其基础架构中的依赖性。
  • 变更自动化, 可以将复杂的变更集应用于您的基础架构,而无需进行过多的人工干预。使用前面提到的执行计划和资源图,您可以准确地知道Terraform将要更改的内容和顺序,从而避免了许多可能的人为错误。
    initial
    terraform安装非常简单,只需要到https://www.terraform.io/downloads.html下载后解压文件放置到工作目录,也可以配置path指定terafrom

Backend
Terraform中的“后端”确定如何加载状态以及如何执行诸如此类的操作apply。这种抽象可以实现非本地文件状态存储,远程执行等。
默认情况下,Terraform使用“本地”后端,这是您惯常使用的Terraform的正常行为。这是在整个引言中被调用的后端。
这是后端的一些好处:

  • 团队合作:后端可以远程存储其状态,并使用锁保护该状态以防止损坏。某些后端(例如Terraform Cloud)甚至会自动存储所有状态修订的历史记录。
  • 将重要文件置于安全位置:根据需要从后端检索状态,并且仅将其存储在内存中。如果您使用的是后端(例如Amazon S3),则状态一直保持不变的唯一位置是S3。
  • 远程操作:对于较大的基础架构或某些更改, terraform apply可能需要很长时间。一些后端支持远程操作,这些操作使该操作可以远程执行。然后,您可以关闭计算机,然后操作仍将完成。配合远程状态存储和上方锁定,这也有助于团队环境。
    terraform {
    required_version = “>= 0.12”
    backend “s3” {
    bucket = “” //S3 桶用于存储状态文件
    dynamodb_table = “” //用于状态锁定和一致性的DynamoDB表的名称。该表必须有一个名为一个主键LockID与类型string。如果未配置,则将禁用状态锁定。
    key = “” // state 文件key路径和名称,包含后缀名
    encrypt = true
    }
    }

terraform init
-input=true如有必要,请输入。如果为false,则在需要输入时将出错。
-lock=false 在与状态相关的操作期间,禁用状态文件的锁定。
-lock-timeout=覆盖Terraform等待获取状态锁的时间。默认值为0s(零秒),如果另一个进程已经锁定,则会立即失败。
-no-color 在命令输出中禁用颜色代码。
-upgrade 将以前安装的所有插件更新为符合配置版本限制的最新版本。此选项不适用于手动安装的插件。
-get-plugins=false—跳过插件安装。Terraform将使用安装在用户plugins目录中的插件,以及已为当前工作目录安装的所有插件。如果安装的插件不足以进行配置,则初始化失败。

terraform plan
该terraform plan命令用于创建执行计划。除非明确禁用,否则Terraform会执行刷新,然后确定要实现配置文件中指定的所需状态需要执行哪些操作。
该命令是检查一组更改的执行计划是否符合您的期望而不对实际资源或状态进行任何更改的便捷方法。例如,terraform plan可以在将更改提交到版本控制之前运行,以建立对其将按预期方式运行的信心。
可选-out参数可用于将生成的计划保存到文件中,以供以后执行terraform apply,这在自动化运行Terraform时很有用 。

-destroy -如果设置,则生成销毁所有已知资源的计划。
-input=true -如果未直接设置,则要求输入变量。
-lock=true -支持锁定时锁定状态文件。
-no-color -禁用带有颜色的输出。
-out=path-保存生成的执行计划的路径。然后可以使用该计划,terraform apply以确保仅应用此计划中显示的更改。阅读下面有关已保存计划的警告。
-parallelism=n-在Terraform遍历图形时限制并发操作的数量 。默认为10
-refresh=true -在检查差异之前更新状态。
-state=path-状态文件的路径。默认为“ terraform.tfstate”。使用远程状态时忽略。
-target=resource- 要定位的资源地址。该标志可以多次使用。请参阅下面的详细信息。
-var 'foo=bar'-在Terraform配置中设置一个变量。可以多次设置此参数。变量值被解释为 HCL,因此可以通过此标志指定列表和映射值。
-var-file=foo-从变量文件配置中设置变量。如果当前目录中存在terraform.tfvars或任何.auto.tfvars文件,它们将被自动加载。terraform.tfvars首先加载,然后.auto.tfvars按字母顺序加载文件。指定的任何文件将-var-file覆盖从工作目录中的文件自动设置的任何值。该参数可以多次使用。

terraform apply
默认情况下,apply在当前目录中扫描配置,并适当地应用更改。但是,可以提供另一种配置或执行计划的路径。显式执行计划文件可用于拆分计划,并将其应用于自动化系统中的单独步骤 。
如果在命令行上未提供明确的计划文件,terraform apply将自动创建一个新计划并提示您批准以应用该计划。如果创建的计划不包括对资源或根模块输出值的任何更改,terraform apply则将立即退出,而不会提示。
-backup=path-备份文件的路径。默认为-state-out带有“ .backup”扩展名。通过设置为“-”禁用。
-compact-warnings -如果Terraform产生没有错误的警告,则以更紧凑的形式显示警告,仅包含摘要消息。

-lock=true -支持锁定时锁定状态文件。
-lock-timeout=0s -重试状态锁定的持续时间。
-input=true -如果未直接设置,则要求输入变量。
-auto-approve -申请前跳过计划的交互式批准。
-no-color -禁用带有颜色的输出。
-parallelism=n-在Terraform遍历图形时限制并发操作的数量 。默认为10
-refresh=true-在计划和应用之前,更新每个资源的状态。如果直接给出计划文件以应用,则这无效。
-state=path-状态文件的路径。默认为“ terraform.tfstate”。使用远程状态时忽略。此设置不会保留,其他命令(例如init)可能无法识别备用状态文件。要配置可用于所有terraform命令的备用状态文件路径,请使用local backend。
-state-out=path-写入更新的状态文件的路径。默认情况下,-state将使用该 路径。使用远程状态时忽略 
-target=resource- 要定位的资源地址。有关更多信息,请参阅中 的定位文档terraform plan。
-var 'foo=bar'-在Terraform配置中设置一个变量。可以多次设置此标志。变量值被解释为 HCL,因此可以通过此标志指定列表和映射值。
-var-file=foo-从变量文件在Terraform配置中设置变量。如果当前目录中存在a terraform.tfvars或任何.auto.tfvars文件,它们将被自动加载。terraform.tfvars首先加载,然后.auto.tfvars按字母顺序加载文件。指定的任何文件将-var-file覆盖从工作目录中的文件自动设置的任何值。该标志可以多次使用。

terraform apply
Terraform管理的基础架构将被破坏。这将在销毁前要求确认。
该命令接受apply命令接受的所有参数和标志,但计划文件参数除外。
如果-auto-approve设置为,则不会显示销毁确认。
该-target标志不会影响“依赖关系”,而是会破坏依赖于指定目标的所有资源。
任何terraform destroy命令的行为都可以使用等效terraform plan -destroy命令随时进行预览。

-lock=true -支持锁定时锁定状态文件。
-lock-timeout=0s -重试状态锁定的持续时间。
-input=true -如果未直接设置,则要求输入变量。
-auto-approve -申请前跳过计划的交互式批准。
-no-color -禁用带有颜色的输出。
-parallelism=n-在Terraform遍历图形时限制并发操作的数量 。默认为10
-refresh=true-在计划和应用之前,更新每个资源的状态。如果直接给出计划文件以应用,则这无效。
-state=path-状态文件的路径。默认为“ terraform.tfstate”。使用远程状态时忽略。此设置不会保留,其他命令(例如init)可能无法识别备用状态文件。要配置可用于所有terraform命令的备用状态文件路径,请使用local backend。
-state-out=path-写入更新的状态文件的路径。默认情况下,-state将使用该 路径。使用远程状态时忽略 
-target=resource- 要定位的资源地址。有关更多信息,请参阅中 的定位文档terraform plan。
-var 'foo=bar'-在Terraform配置中设置一个变量。可以多次设置此标志。变量值被解释为 HCL,因此可以通过此标志指定列表和映射值。
-var-file=foo-从变量文件在Terraform配置中设置变量。如果当前目录中存在a terraform.tfvars或任何.auto.tfvars文件,它们将被自动加载。terraform.tfvars首先加载,然后.auto.tfvars按字母顺序加载文件。指定的任何文件将-var-file覆盖从工作目录中的文件自动设置的任何值。该标志可以多次使用。

terraform taint
命令手动将Terraform管理的资源标记为已污染,强制将其销毁并在下一次应用时重新创建。
该命令不会修改基础结构,但是会修改状态文件,以将资源标记为已污染。将资源标记为已污染后,下一个 计划将显示该资源将被销毁并重新创建,而下一个 应用将实施此更改。
当您想要某种在资源属性中不可见的重新创建的副作用时,强制重新创建资源很有用。例如:重新运行预配器将导致节点不同,或者从基本映像重新引导计算机将导致新的启动脚本运行。
请注意,为娱乐而污染资源可能会影响依赖于新污染资源的资源。例如,可能需要修改使用服务器IP地址的DNS资源,以反映受污染服务器的潜在新IP地址。在这种情况下, plan命令将显示此内容。

-address参数是玷污了资源标记的地址。地址 采用资源地址语法语法,如其他命令的输出所示,例aws_instance.foo
aws_instance.bar[1]
aws_instance.baz[\"key\"] (资源地址中的引号必须在命令行上转义,以便您的shell不会解释它们)
module.foo.module.bar.aws_instance.qux
命令行标志都是可选的。可用标志的列表为:
 -allow-missing-如果指定,即使资源丢失,命令也将成功(退出代码0)。该命令仍然可以出错,但仅在严重错误的情况下才可以。
 -backup=path-备份文件的路径。默认为-state-out带有“ .backup”扩展名。通过设置为“-”禁用。
 -lock=true -支持锁定时锁定状态文件。
 -lock-timeout=0s -重试状态锁定的持续时间。
 -state=path-读取和写入状态文件的路径。默认为“ terraform.tfstate”。使用远程状态时忽略。
 -state-out=path-写入更新的状态文件的路径。默认情况下,-state将使用该 路径。使用远程状态时忽略 

terraform force-unlock
手动解锁已定义配置的状态。
这不会修改您的基础结构。此命令删除当前配置的状态锁定。此锁的行为取决于所使用的后端。本地状态文件不能由其他进程解锁。
-force -请勿输入解锁确认信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值