
terraform
文章平均质量分 68
Terraform 是一个基础设施管理工具,用于创建、管理和部署基础设施资源。它提供了一种简单的方式来定义基础设施的状态,并在不同的云平台上管理资源。它支持多个云平台,包括 AWS、Azure、Google Cloud Platform、Oracle Cloud Infrastructure 等。
alden_ygq
一枚北漂7年多的资深SRE菜鸟,专注SRE方向,专注于运维体系建设。个人宣言:先努力成就自己,再用知识成就他人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
terraform output 输出json
Terraform 0.12+ 对 JSON 输出格式进行了改进,建议使用较新版本以获得更规范的输出。命令将这些值以 JSON 格式输出。和 JSON 格式,你可以实现 Terraform 与其他系统之间的无缝集成。在 Terraform 配置中,你可以直接输出 JSON 格式的数据,或通过。对于复杂的嵌套结构(如多级 Map 或 List),建议使用。如果输出包含敏感信息(如密码、密钥),应设置。在 Terraform 中,你可以使用。你可以在后续的资源配置中使用。块定义输出值,并通过。原创 2025-05-20 18:29:21 · 201 阅读 · 0 评论 -
Terraformer使用指南
Terraformer 是一款用 Go 语言开发的 CLI 工具,支持将现有云基础设施资源反向生成 Terraform 配置文件(即),适用于 AWS、Google Cloud、Azure 等主流云平台。资源逆向工程:自动识别并导出云资源配置为.tf文件。多服务支持:覆盖计算实例、网络、存储等资源类型,支持自定义扩展。协作友好:生成的代码可直接通过 Terraform 管理,便于团队协作和版本控制。原创 2025-05-16 13:29:47 · 669 阅读 · 0 评论 -
terraform云上实战(一):执行阿里云云助手命令
的本地执行器实现结果校验和流程控制。建议在关键操作中添加超时、重试和日志记录逻辑,确保执行过程的鲁棒性。通过 Terraform 执行阿里云云助手命令的关键在于。必须为 ECS 实例绑定 RAM 角色。资源,可实现自动化运维操作,并通过。则退出 Terraform。# 查看 Nginx 服务状态。确保命令在实例就绪后执行。)解析输出内容,若包含。确保角色信任关系包含。原创 2025-05-11 09:35:46 · 331 阅读 · 0 评论 -
terraform 删除资源前先校验资源是否存在关联资源
编写外部脚本进行依赖检查,并通过local-exec# 在删除资源前依赖验证# ... 资源配置 ...验证脚本示例 (/bin/bash# 查询关联的弹性IPthenecho "错误: 实例 $INSTANCE_ID 有关联的弹性IP,不能删除"exit 1fi# 查询挂载的磁盘thenecho "错误: 实例 $INSTANCE_ID 有挂载的磁盘,不能删除"exit 1fiexit 0明确依赖关系:在 Terraform 配置中显式定义资源间的依赖关系预检查机制。原创 2025-05-01 21:43:41 · 250 阅读 · 0 评论 -
terraform实现本地加密与解密
在 Terraform 中实现本地加密与解密(不依赖云服务),可以通过或等本地加密工具配合实现。原创 2025-05-01 20:50:20 · 322 阅读 · 0 评论 -
terraform生成随机密码
在 Terraform 中生成安全随机密码可以通过。原创 2025-05-01 20:40:27 · 311 阅读 · 0 评论 -
terraform output输出实战
Terraform 的 是基础设施即代码(IaC)工作流中至关重要的数据传递机制,用于将资源配置结果暴露给外部系统或后续流程。以下是实战级详解:在 文件中定义要暴露的资源属性:2. 查看输出结果应用配置后查看输出:二、高级输出技巧1. 结构化输出组合多个资源属性生成复杂结构:2. 条件输出根据变量值动态生成输出:3. 格式化输出使用 函数定制输出格式:三、模块间输出传递1. 子模块定义输出在模块 中:2. 父模块引用输出在根模块原创 2025-05-01 20:37:45 · 369 阅读 · 0 评论 -
terraform中statefile文件的实现原理及作用
Terraform 的)是其基础设施即代码(IaC)机制的核心组件,用于记录和管理云资源的实际状态。原创 2025-05-01 20:16:54 · 1046 阅读 · 0 评论 -
terraform backend用途是最佳实践
在 Terraform 中,backend的核心用途是管理,通过远程存储和共享状态,确保团队协作的安全性和一致性,同时支持复杂环境下的基础设施管理。原创 2025-04-30 14:11:38 · 995 阅读 · 0 评论 -
terraform 动态块(Dynamic Blocks)详解与实践
动态块是 Terraform 中实现配置灵活性的重要工具,通过动态生成嵌套配置块,可以大幅减少重复代码,提高模块的可维护性和复用性。合理使用动态块结合复杂数据结构,能构建出适应多种环境的基础设施即代码模板。但需注意其适用场景和性能影响,避免过度使用导致代码可读性下降。原创 2025-04-28 19:14:14 · 657 阅读 · 0 评论 -
terraform通过data源获取外部数据
你可以通过编写自定义 provider 扩展数据源功能。例如,使用externalData Sources 是 Terraform 中连接现有基础设施与配置的桥梁,通过灵活查询外部数据,你可以构建更动态、适应性更强的基础设施代码。合理使用数据源能减少硬编码,提高配置复用性,同时需注意其执行时机和缓存机制带来的潜在影响。结合自定义 provider 和外部脚本,还可以进一步扩展数据源的能力边界。原创 2025-04-28 19:06:26 · 863 阅读 · 0 评论 -
terraform使用workspace管理多工作环境
Terraform Workspaces 是管理多环境的轻量级解决方案,适合配置相似但参数不同的场景。通过状态隔离和动态变量,你可以高效地在开发、测试和生产环境间切换。结合远程后端,工作区能提供安全、可扩展的基础设施管理方式。原创 2025-04-28 18:45:07 · 446 阅读 · 0 评论 -
terraform环境变量详解
环境变量是 Terraform 灵活配置的核心机制,覆盖从日志控制到云服务认证的各个方面。合理使用环境变量能显著提高开发效率,特别是在自动化场景中。建议结合项目需求,将常用配置封装为环境变量,同时注意敏感信息的安全管理。原创 2025-04-28 18:26:57 · 426 阅读 · 0 评论 -
TF_LOG 配置及级别详解
以下是Terraform中TF_LOG。原创 2025-04-28 17:38:48 · 393 阅读 · 0 评论 -
terraform隐藏云账号ak/sk信息
授权 Terraform 通过 AppRole/AWS Auth 等方式访问 Vault。在 AWS Secrets Manager 或阿里云 KMS 中存储 AK/SK。:为 EC2 实例分配 IAM 角色,Terraform 无需配置 AK/SK。使用临时凭证(如 AWS STS Token、阿里云 RAM 角色)。根据团队规模、基础设施复杂度和安全要求,选择最合适的方案。配置 Terraform 数据源读取密钥。启用云平台的 AK/SK 使用审计日志。,最大程度减少 AK/SK 的直接使用。原创 2025-04-28 17:07:13 · 964 阅读 · 0 评论 -
Terraform的加密功能
Terraform 提供了多种方法来处理敏感数据,以确保在配置基础设施时不会泄露敏感信息。原创 2025-04-28 16:59:51 · 378 阅读 · 0 评论 -
terraform使用vault动态管多理云账号AK/SK
为了使用 Terraform 和 HashiCorp Vault 动态管理多个云账号的 Access Key (AK) 和 Secret Key (SK),可以按照以下步骤实现安全、自动化的凭证管理:核心组件:Vault:存储或动态生成云账号的 AK/SK,提供临时凭证。Terraform:通过 Vault 动态获取 AK/SK,用于云资源操作。流程:Terraform 通过 Vault 认证(如 AppRole)获取临时 AK/SK。使用临时 AK/SK 配置云服务商的 Terraform Provide原创 2025-04-28 16:52:05 · 433 阅读 · 0 评论 -
如何将现有资源导入到 Terraform 管理?
在 Terraform 配置文件中定义与现有资源匹配的资源块。原创 2025-04-28 14:01:09 · 773 阅读 · 0 评论 -
terraform查看资源建的关联关系
方法适用场景优点缺点全局依赖关系可视化直观展示全量依赖需安装额外工具快速查看单个资源的引用关系无需额外工具手动解析输出第三方工具增强交互式分析交互性强,美观需额外安装/配置通过以上方法,可清晰掌握资源间的显式(depends_on)和隐式(属性引用)依赖关系,辅助调试和优化架构设计。原创 2025-04-27 18:25:24 · 434 阅读 · 0 评论 -
terraform资源插件本地化安装
【代码】terraform资源插件本地化安装。原创 2024-08-24 14:12:43 · 392 阅读 · 0 评论 -
terraform执行命令
如果需要在某些资源被创建后执行本地命令,可以使用。如果命令需要在模块中执行,可以将模块定义为。如果需要在远程机器上执行命令,可以使用。配置来执行本地命令。Terraform 的。原创 2024-07-19 16:02:02 · 427 阅读 · 0 评论 -
用 Terraform 初始化 GCP环境
完成以上步骤后,您已成功使用 gcloud 指令建立了一个 service account,并为其分配了适当的角色/权限。建立 service account 后,您可以为该账号新增所需的角色/权限。文件,这个文件是用来记录 Terraform 管理的资源状态,以及资源间的关联性。替换为刚刚建立的 service account 的电子邮件地址。安装 Terraform。替换为刚刚建立的 service account 的電子邮件地址。替换为您想要建立的 service account 名称,并将。原创 2024-06-22 16:50:14 · 685 阅读 · 0 评论 -
Terraform Init 加速方案配置
到此就完成了terraform离线本地源的配置了, 除了这种方式外其实也可以基于terraform开放的HTTP API协议,使用Python Flask写一个registry server。变量,让TerraformCLI可以加载到配置文件。环境变量指定 Terraform CLI 配置文件的位置,任何此类文件都应遵循命名模式。进行操作, 如果手动到registry下载,需要按照目录结构存放;配置文件,文件位置取决于主机的操作系统。,并直接放在相关用户的主目录中。下载,并按照目录结构存放到。原创 2024-05-08 19:51:55 · 965 阅读 · 0 评论 -
Terraform输入变量
使用输入变量可以在创建基础设施资源时动态传入值,如果把Terraform代码看作是一个函数,那么输入变量都是函数参数。Terraform输入变量使用variable如上示例都是合法的变量定义,紧跟在variable关键字之后的就是变量名。在同一个Terraform模块(不包含子文件夹)中的变量名必须是唯一的,在代码中可以使用var.变量名的方式来引用变量的值。原创 2024-05-07 21:47:24 · 1413 阅读 · 0 评论 -
Terraform局部值
局部值使用localslocals {在一个locals块中可以定义多个局部值,当然在同一个Terraform模块中可以定义多个locals块。在localslocals {# 局部值引用的是资源属性如上示例,在locals块中定义的局部值引用的是资源属性,甚至还使用了函数concat()。如下示例在localslocals {common_tags = { # 这个局部值是一个对象类型,它在属性中引用了其他局部值。原创 2024-05-07 21:43:05 · 286 阅读 · 0 评论 -
Terraform输出值
如果把Terraform代码看作是一个函数的话,那么“输入变量”是函数的参数,而“局部值”是函数内部的局部变量,“输出值”就是函数的返回值。在Terraform代码中可以定义多个输出值。在执行命令成功之后会打印出定义的输出值信息,还可以通过打印出上一次执行成功之后得到的输出值。原创 2024-05-07 19:16:56 · 573 阅读 · 0 评论 -
Terraform资源
资源是Terraform中最核心的部分,使用Terraform的目的就是用于管理资源。在Terraform中,资源使用resource块定义。一个resource可以定义一个或多个基础设施资源对象,如:VPC,虚拟机,DNS记录,Consul的键值对数据等。原创 2024-05-07 18:26:12 · 1242 阅读 · 0 评论 -
Terraform数据源
数据源允许查询或计算一些数据以供其他地方使用。使用数据源可以使得Terraform代码使用在Terraform管理范围之外的一些信息,或者是读取其他Terraform代码保存的状态。每一种Provider都可以在定义一些资源类型的同时定义一些数据源。通常来讲,在同一个云服务产品下有不同的资源和对应的数据源,资源(resource)用于对远程基础设施进行增删改,数据源(data)用于对远程基础设施进行查询。原创 2024-05-07 18:22:42 · 1017 阅读 · 0 评论 -
Terraform函数
为了在表达式上更加灵活地方便计算,Terraform提供了大量的内置函数。Terraform目前不支持自定义函数,只能使用自带的。如下整理出Terraform自带的内置函数列表,方便查阅。执行命令进入到Terraform Console界面,可以执行并验证如下函数的执行效果。原创 2024-05-07 18:20:34 · 1234 阅读 · 0 评论 -
Terraform表达式
表达式用来在配置文件中进行一些计算,最简单的表达式就是字面量,比如”hello”,或者5。Terraform也支持一些更加复杂的表达式,比如引用其他resource的输出值、数学计算、布尔条件计算,以及一些内建的函数。在Terraform配置中很多地方都可以使用表达式,但某些特定的场景下限制了可以使用的表达式的类型,例如只准使用特定数据类型的字面量,或是禁止使用resource的输出值等。原创 2024-05-07 12:02:38 · 832 阅读 · 0 评论 -
Terraform代码的check块
check块提供了Terraform中最灵活的验证功能,可以在其中引用输出值、输入参数、资源以及数据源的值。的确可以使用check块取代所有其他的自定义条件检查,但这并不意味着应该要这么做。check与其他检查最大的区别在于check块不会中断Terraform的执行,需要将这种非阻塞性的行为特点计入考量来决定采取何种检查。原创 2024-05-06 22:58:56 · 621 阅读 · 0 评论 -
Terraform代码风格规范
【代码】Terraform代码风格规范。原创 2024-05-06 22:55:15 · 331 阅读 · 0 评论 -
Terraform代码重载文件
一般来说Terraform会加载模块内所有的.tf和.tf.json文件,并要求文件内定义了一组无重复的对象。如果两个文件尝试定义同一个对象,那么Terraform会报错。在某些少见场景中,能够用单独的文件重载已有对象配置的特定部分将会十分有用。比如说,由工程师编写的配置文件能够在运行时被程序生成的JSON文件部分重载。为支持这些少见场景,Terrform会对后缀名为和的代码文件进行特殊处理,对于名为和的代码文件也会进行相同的特殊处理。Terraform加载代码文件时会这些重载文件,然后才会按照。原创 2024-05-06 22:54:28 · 826 阅读 · 0 评论 -
Terraform创建模块
模块就是包含一组Terraform代码的文件夹,可以通过模块直接使用别人编写好的Terraform代码来创建资源。Terraform模块是编写高质量Terraform代码,提升代码复用性的重要手段,可以说,一个成熟的生产环境应该是由数个可信成熟的模块组装而成的。实际上所有包含Terraform代码文件的文件夹都是一个Terraform模块,如果直接在一个文件夹内执行或者命令,那么当前所在的文件夹就被称为根模块,也可以在执行Terraform命令时通过命令行参数指定根模块的路径。原创 2024-05-06 22:51:19 · 430 阅读 · 0 评论 -
Terraform使用模块
在Terraform代码中引用一个模块,使用的是module块。每当在代码中新增、删除或者修改一个module块之后,都要执行或是命令来获取模块代码并安装到本地磁盘上。原创 2024-05-06 22:48:19 · 1273 阅读 · 0 评论 -
Terraform模块元参数
如果要创建两台这样的主机怎么办?的模块中的所有资源的创建都会发生在被依赖的模块中所有资源创建完成之后。在Terraform 0.13之前,模块在使用上存在一些限制。自从Terraform 0.13开始,模块也像资源一样,支持。要注意的是Terraform 0.13之后在模块上声明。,列表中也可以传入另一个模块,声明。原创 2024-05-06 22:44:13 · 279 阅读 · 0 评论 -
Terraform模块重构
本节介绍的通过moved块进行模块重构的功能是从Terraform v1.1开始被引入的,如果要在之前的版本进行这样的操作,必须通过命令来完成。对一些旨在被人复用的老模块来说,最初的模块结构和资源名称可能会逐渐变得不再合适。例如,可能发现将以前的一个子模块分割成两个单独的模块会更合理,这需要将现有资源的一个子集移动到新的模块中。Terraform将以前的状态与新代码进行比较,资源与每个模块或资源的唯一地址相关联。原创 2024-05-05 23:22:47 · 987 阅读 · 0 评论 -
Terraform模块设计原则
应当将模块的结构记录在文档中,并且在所有模块之间保持统一的结构。定义一组模块必须包含的.tf文件,定义它们应包含哪些内容为模块定义一个.gitignore(或类似作用的)文件创建供样例代码所使用的输入变量值的标准方式(例如:一个文件)使用具有固定子目录的一致的目录结构,即使它们可能是空的所有模块目录都必须包含一个README文件详细记述目录存在的目的以及如何使用其中的文件。原创 2024-05-05 23:13:53 · 1119 阅读 · 0 评论 -
Terraform服务配置文件
命令行配置文件(或)为每个用户配置了命令行的行为,适用于所有的Terraform工作目录,这与编写的Terraform代码是分开的。原创 2024-05-05 23:05:22 · 1072 阅读 · 0 评论 -
Terraform环境变量
Terraform使用一系列的环境变量来定制化各方面的行为,如果只是想简单使用Terraform,并不需要设置这些环境变量;但它们可以在一些不常见的场景下改变Terraform的默认行为,例如出于调试目的修改输出日志的级别。原创 2024-05-05 23:01:16 · 561 阅读 · 0 评论