【Terraform命令一】

Terraform命令

  • 一、常用命令
    • [1.1 Backend](#1.1 Backend)
    • [1.2 Terraform init](#1.2 Terraform init)
    • [1.3 Terraform plan](#1.3 Terraform plan)
    • [1.4 Terraform apply](#1.4 Terraform apply)
    • [1.5 Terraform destroy](#1.5 Terraform destroy)
    • [1.6 Terraform taint](#1.6 Terraform taint)
    • [1.7 terraform force-unlock](#1.7 terraform force-unlock)
  • 总结

一、常用命令

1.1 Backend

txt 复制代码
团队合作:后端可以远程存储其状态,并使用锁保护该状态以防止损坏。某些后端(例如 Terraform Cloud)甚至会自动存储所有状态修订的历史记录。将重要文件置于安全位置:根据需要从后端检索状态,并且仅将其存储在内存中。如果您使用的是后端(例如 Amazon S3),则状态一直保持不变的唯一位置是S3。

远程操作:对于较大的基础架构或某些更改, terraform apply 可能需要很长时间。一些后端支持远程操作,这些操作使该操作可以远程执行。然后,您可以关闭计算机,然后操作仍将完成。配合远程状态存储和上方锁定,这也有助于团队环境。

简单理解:就是在团队协助时,Backdend可以通过远程存储和管理状态文件,可以提高团队协作效率。把之前的tfstate文件放到远程供团队使用。
bash 复制代码
terraform {
    required_version = ">= 0.12"
    backend "s3" {
        bucket = "" //S3 桶用于存储状态文件
        dynamodb_table = "" //用于状态锁定和一致性的DynamoDB表的名称。该表必须有一个名为一个主键LockID与类型string。如果未配置,则将禁用状态锁定。
        key = "" // state 文件key路径和名称,包含后缀名
        encrypt = true
    }
}

1.2 Terraform init

  1. 初始化工作目录:terraform init 命令用于初始化 Terraform 的工作目录。它会查找当前目录下的 .tf
    配置文件,并根据这些配置文件中的配置来初始化工作环境。
  2. 安装依赖:
bash 复制代码
   Provider 插件安装:Terraform需要与各种云服务和基础设施提供商进行交互,这些交互是通过所谓的"Provider"插件来实现的。terraform init会自动下载和安装配置文件中声明的所有 Provider 插件。
bash 复制代码
Module 安装:如果配置文件中有 module 块配置,terraform init 也会将这些模块及其依赖项安装到本地。
  1. 初始化 Backend:如果配置文件中定义了 Backend(远程状态存储),terraform init 还会进行 Backend的初始化,建立与远程存储的连接,并可能迁移本地状态到远程存储

1.3 Terraform plan

它主要负责生成一个执行计划,该计划描述了如何将当前的基础设施状态转变为用户所期望的状态。

  • 读取配置:Terraform 读取 Terraform 配置文件和任何相关的状态文件(如果已存在)。
  • 生成计划:基于配置和当前状态,Terraform 生成一个执行计划,该计划详细说明了将进行的更改。
  • 预览输出:Terraform 将执行计划的详细信息输出到控制台,以便用户预览

1.4 Terraform apply

用于将 Terraform 配置文件中定义的基础设施更改应用到实际环境中。当你运行 terraform plan 并确认计划中的更改是你所期望的之后,你可以使用 terraform apply 命令来实际执行这些更改。

工作流程:

  1. 读取配置:Terraform 首先读取 .tf 配置文件和任何相关的状态文件(如果已存在)。
  2. 生成计划(如果尚未生成):如果尚未运行 terraform plan,Terraform 会根据配置文件和当前状态生成一个执行计划。
  3. 用户确认:在显示计划之前,Terraform 会提示用户确认是否要应用更改。这通常包括一个简短的摘要和提示,询问用户是否要继续。
  4. 应用更改:一旦用户确认,Terraform 就会开始应用计划中的更改。这可能包括创建新资源、更新现有资源或销毁不再需要的资源。

1.5 Terraform destroy

用于销毁通过 Terraform 创建的基础设施资源。

销毁资源:Terraform destroy 命令会根据 Terraform 配置文件中的定义,销毁所有或指定的基础设施资源。

1.6 Terraform taint

用于给已存在的资源实例标记为"污点"(tainted)。当一个资源被标记为污点后,Terraform 会在下一次 terraform apply 命令执行时,销毁该资源并重新创建它。这个命令在需要强制重新创建资源时非常有用,比如当资源的状态与配置文件不一致,或者资源无法被正常更新时。

使用场景:

  • 资源状态不一致:当资源的状态与 Terraform 配置文件中的定义不一致时,可以使用 terraform taint
    命令来强制重新创建该资源。
  • 资源更新失败:有时,由于某些原因(如依赖关系问题、权限问题等),Terraform 无法正常更新资源。在这种情况下,可以使用terraform taint 命令来销毁并重新创建资源。

1.7 terraform force-unlock

手动解锁已定义的配置文件状态,这个只有在定义backend时,才可使用。

总结

主要对Terraform的各种命令进行解释

相关推荐
耶啵奶膘37 分钟前
uniapp-是否删除
linux·前端·uni-app
魔道不误砍柴功1 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2341 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨1 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
王哈哈^_^2 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie3 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
测开小菜鸟3 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
开心工作室_kaic3 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
有梦想的刺儿4 小时前
webWorker基本用法
前端·javascript·vue.js
P.H. Infinity4 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq