首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【翻译】Terraform 最佳实践:模块组合

原文:https://www.terraform.io/language/modules/develop/composition 在只有一个根模块的简单 Terraform 配置中,我们创建一组资源并使用...例如,考虑一个 Terraform 模块基于磁盘映像部署计算实例的情况,并且在某些环境中有一个专用磁盘映像可用,而其他环境共享一个公共基础磁盘映像。...Terraform 管理的内容。...但是,通过 Terraform 模块的组合,可以通过自己权衡哪些平台功能对您很重要来创建自己的轻量级多云抽象。 在多个供应商实现相同概念、协议或开放标准的任何情况下,都会出现这种抽象的机会。...你可以在 Terraform 通过定义代表所涉及概念的对象,然后将这些对象类型用于模块输入变量来创建像这样的轻量级抽象。

1.9K20

VBA实用小程序52: 将所有VBA模块出到另一工作簿

可以在该工作簿的每个代码模块中单击鼠标右键,在快捷菜单中,使用“导出文件”命令(如下图1所示),将模块逐一导出到某个文件夹中,然后,打开想要导入模块的工作簿,在该工作簿的工程资源管理器中单击右键,选择导入文件...,再将模块导入。...下面的代码一次性将指定工作簿中除导出程序所在模块外的所有VBA模块导入到指定的另一工作簿: Sub ExportModule() Dim wbExport As Workbook Dim..."VBAProgram52.xlsm") '要导入模块的工作簿 Set wbImport =Workbooks("ExportToWorkbook.xlsm") '遍历代码模块..."ExportModule" Then '将模块出到临时文件夹中 mdlModule.Export("C:\temp\" & mdlModule.Name

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

Terraform:多云、混合云环境下实现基础设施即代码

reference) 隐式依赖关系 在资源内部引用另一个资源创建的依赖,用于确定资源创建顺序 terraform graph命令 显示资源的依赖关系图 type关键字 用于对用户输入的变量进行类型约束...当在一个资源内引用另一个资源时,会创建隐式依赖关系。Terraform可以通过分析这些依赖关系,构建依赖关系图,并使用该关系图自动确定资源的创建顺序。...生产级Terraform代码 表6-1:从零开始构建生产级基础设施需要的时间 生产级基础设施模块特点 模块要小型化 可组合的模块 可测试的模块 可发布的模块 Terraform模块之外的内容...一旦开始定期对模块进行测试,你就会发现另一个非常有用的做法:版本固定(versionpinning)。...当模块发布到注册中心后,将拥有一个漂亮的界面来显示模块细节,如图6-4所示为Terraform注册中心中的HashiCorp Vault模块

31210

使用Terraform配置Linode环境

从linode-template.tf创建另一个名为linode-www.tf(不要删除linode-template.tf)的文件: 〜/ go_projects /斌/ linode-www.tf...使用Terraform 管理您的基础架构 Terraform模块 任何代码驱动的解决方案背后的想法是避免重复的块。Terraform使用称为模块的概念来对通用服务器要求和配置进行分组。...基本模块结构 模块结构非常灵活,因此您可以根据需要使用尽可能多的Terraform文件来描述您的基础架构。...cd ~/go_projects/bin/testing/ terraform init terraform planned terraform apply 模块的可能性是无穷无尽的。...您可以一次使用多个模块,可以将模块的使用与传统resource定义混合使用,或者甚至可以从远程源调用模块。有关更多信息,请阅读Terraform 模块文档。

3.6K30

Terraform实战

部署多应用 Terraform模块及其相关概念 概念 描述 Terraform模块 自包含的代码包,用于组合相关资源,创建可复用组件 根模块 工作空间的顶级模块,配置输入变量和运行Terraform命令...;建议锁定模块版本 Terraform-docs 开源工具,用于自动生成基于配置代码的文档 .gitignore文件 用于Terraform模块,排除不必要的文件 共享模块 可以通过多种方式获取,如本地路径...、GitHub仓库、Terraform注册表 GitHub模块发布 创建以terraform--形式命名的仓库 Terraform注册表 免费且易于使用,支持公共和私有模块共享 官方模块规则 模块应为GitHub...如果你将模块发布到GitHub或Terraform注册表上,则可以将source设置为指向你的模块;否则,你可以使用我已经发布的那个模块。...● 恢复力:多云架构可以自动把故障从一个云转移到另一个云,这让它们的恢复力比单云架构更强。 ● 合规性:内部或外部因素可能产生影响。例如,如果你想在某个国家运营云,就必须遵守相关的政府规定。

22110

Terraform Cloud免费开放

Terraform Cloud正式GA 为了方便广大开源客户,Hashicorp在2019年5月决定将Terraform Cloud的远程状态管理功能免费开放给开源版用户。...免费版功能 免费版功能包括版本控制集成、远程计划和实施远程计划和实施、通知及webhook、全http API驱动、状态管理、模拟计划、私有化模块注册器以及全HTTP界面。...Terraform的源代码可以存储在以上三种版本控制软件中,在源文件出现变化的情况下,Terraform Cloud会自动同步源代码并进行计划和实施。...团队协作 免费版用户也可以创建团队,并且邀请不超过5名其它terraform 用户一起对组织里的Terraform workspace进行管理。...也可以拷贝粘贴terraform cloud的计划输出到github里来。

4.4K30

Terraform 系列-使用 for-each 对本地 json 进行迭代

如果你熟悉传统的编程语言,把 Terraform 模块比作函数定义可能会很有用: •variables(输入变量)[5] 就像函数的参数。•outputs(输出值)[6] 就像函数的返回值。...for 表达式 一个for表达式通过转换另一个复杂类型的值来创建一个复杂类型的值。输入值中的每个元素可以对应于结果中的一个或零个值,并且可以使用一个任意的表达式来将每个输入元素转化为输出元素。...如果一个资源或模块块包括一个for_each参数,其值是一个 map 或字符串集合,Terraform 为该 map 或字符串集合的每个成员创建一个实例。...版本说明: for_each是在 Terraform 0.12.6 中添加的。Terraform 0.13 中增加了对for_each 的模块支持;以前的版本只能在资源中使用它。...注意:一个特定的资源或模块块不能同时使用count和for_each。 for_each是 Terraform 语言定义的一个元参数。它可以与模块和每一种资源类型一起使用。

31230

Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?

这里再重复一下: •IaC•工作空间•变量•运行-计划和应用•资源图•供应商•模块•注册表•声明式编程•云无关•表达能力强且高度可扩展•协同工作(需要进一步配置)•生命周期管理•测试•HCL•安全和密钥管理...意味着所有部署都是从一个集中位置完成的•私有模块注册表: 私有模块存储库允许跨多个工作空间和项目访问模块代码的单个真实源,从而降低差异的可能性,从而提高代码稳定性。...Remote State VCS 连接 △ VCS(GitHub) 连接 工作空间管理 △ 工作空间管理 安全和密钥管理 △ 安全和密钥管理 远程运行 △ 远程运行 运行状态 △ 运行状态 私有模块注册表...△ 私有模块注册表 团队管理功能增强 •团队管理: 团队管理是工作空间管理的一个子功能,借助此功能,工作空间管理员可以通过根据其公司的组织结构创建团队来管理云用户的访问级别。...降低开发人员使用心智负担,开发人员从预定义的 IaC 模块构建配置;按需预配。

15110

Terraform 系列-Terraform 简介

•变量(Variable): 即用户提供的值,它们能够参数化 Terraform 模块 (modules), 而不必修改源代码。...如:AWS/Azure/GCP/Kubernetes/Aliyun/OCI Providers•模块(Modules): 模块Terraform 配置的独立包,允许把相关资源组合到一起,创建出可复用的组件...要使用模块,你并不需要知道模块的工作方式,只需要知道如何设置输入和输出即可。对于提升软件抽象度和代码复用,模块是很有用的工具。类似于积木块或 Python 的 library....•注册表(Registry): 发现为所有 Terraform 资源类型提供支持的 Terraform 提供程序,或查找用于快速部署通用基础结构配置的模块。...但是 Terraform 的生态(供应商和模块)要比 CrossPlane 强的多得多。

29520

腾讯云Terraform应用指南(三)

for the current configuration $ terraform force-unlock LOCK_ID 2、get terraform get 用于下载和安装配置模块。...模块可用于创建轻量级的抽象,这样用户就可以根据模块的体系结构来配置基础资源,有关模块化的更多信息点击这里。...目录下的模块 // Sets the path of the root module $ terraform get -update ~/tencentcloud options -update...- 将检查已经下载的模块是否有更新,如果有更新,则下载这些更新 // Modules are downloaded will be checked for updates $ terraform...升级模块和加载插件分别作为初始化的一个步骤 -lock=false - 禁止使用状态锁 Copy a Source Module 默认情况下,terraform init会假设工作目录已经包含一个配置,

5.2K64

Terraform命令行工具介绍、安装、使用

博客首页:互联网-小啊宇 Terraform命令行工具 ⭐Terraform简介 Terraform的定义 Terraform的特点 ⭐关键概念 Configuration:基础设施的定义和描述...的安装与使用 Centos7安装Terraform 查看Terraform版本 常用命令 ⭐Terraform简介 Terraform的定义 Terraform是一个可以安全、高效地建立、变更、以及版本化管理基础设施的工具...records-uni.txt" } | 如上定义一个records_ds_uni的资源,其通过data引用,查询test.com域名下,解析记录匹配mobile*.api的,解析线路为unicom的所有A记录,并输出到...root@localhost ~]# terraform --version Terraform v1.2.5 on linux_amd64 常用命令 terraform init: 初始化,加载所需模块...terraform apply:新建、变更资源 terraform show:资源展示,展示当前state中所管理的资源以及所有属性 terraform destroy: 资源释放 terraform

2.6K40

Terraform的几个关键概念

Terraform的架构 Terraform本身是基于插件的架构,可扩展性很强,可以方便程序员对Terraform进行扩展。...Terraform从逻辑上可以分为两层,核心层(Terraform Core)和插件层(Terraform Provider)。...其中terraform企业版提供远程运行terraform,以及其他一些企业级特性。 Terraform模块 牛顿曾经说过:如果说我看得比别人更远些,那是因为我站在巨人的肩膀上。...Terraform模块就是把一些高度可重用的代码写成模块,方便其他人使用。模块由输入参数、输出参数以及主逻辑组成。这就跟传统编程语言里的函数很像。...Terraform提供了公开的模块注册器,模块编写完成以后,只要符合规范,就可以发布到模块注册器中让大家使用。

8.1K31

Terraform 系列-使用Dynamic Blocks对Blocks进行迭代

系列文章 •Terraform 系列文章[1]•Grafana 系列文章[2] 概述 Terraform 系列文章[3] 介绍了使用 Grafana Terraform Provider, 基于 Terraform...您可以在必要时动态生成这些嵌套结构,方法是将 dynamic 模块嵌套在其他 dynamic 模块的 content 部分中。...例如,一个模块可能会接受如下复杂的数据结构: variable "load_balancer_origin_groups" { type = map(object({ origins = set...过度使用 dynamic 块会使配置变得难以阅读和维护,因此我们建议仅在需要隐藏细节以便为可重用模块构建简洁的用户界面时使用它们。在可能的情况下,一定要按字面意思写出嵌套模块。...| Resources | grafana/grafana | Terraform | Terraform Registry[10] References [1] Terraform 系列文章: https

22720

Terraform 与 Kubernetes DevOps 工具比较

什么是 TerraformTerraform 是由 HashiCorp 创建的开源软件工具。它通过自动化、HCL 和其他软件功能帮助用户管理他们的数据中心基础设施。...Terraform 与 Kubernetes 功能比较 多云部署 生命周期管理 私有模块注册表 自动化能力 内置容器化编排 Terraform ✅ ✅ ✅ ✅ ❌ Kubernetes ✅ ✅ ❌ ✅...生命周期管理 Terraform 用户可以使用生命周期参数管理其资源生命周期。这些涉及用于创建和销毁资源的自定义规则。资源是 Terraform 对一个或多个基础设施对象的术语。...自动化能力 Terraform 用户可以自动化他们的基础设施配置、合规性和管理。自动化可以提供运行之间的一致性、用于控制 Terraform 输出的功能等等。...自动调度是另一个功能,Kubernetes 根据其特定的资源要求和约束自动放置容器到目标主机。此外,用户可以自动化存储编排以挂载用户首选的存储系统。

1.3K10

Crossplane vs Terraform

Terraform通过使用模块来支持这个模型。模块与软件库没有什么不同。像Crossplane一样,Terraform资源是外部API资源的高保真表示。...模块在这些资源的更广泛配置之上提供了一个简化的抽象——例如,RDS模块将8个不同的Terraform资源抽象为一个单一的“RDS实例”概念。...尽管平台团队可以发布一个模块,允许应用程序团队管理“RDS实例”,但访问控制仍然停留在云提供商API级别,因此围绕“数据库子网组”和“数据库参数组”进行框架设置。 ?...Terraform模块的Crossplane同等特性是一个XR(Composite Resource)。每个XR作为API端点暴露。...相对于在笔记本电脑上运行Terraform的团队来说,这是一个进步,但它暴露了组织在尝试扩大Terraform使用时面临的一个关键问题。Terraform是一个命令行工具-不是一个控制平面。

3.7K10

追赶 terraform,让基础设施代码化更加容易,pulumi 都做了些什么?

terraform 支持模块(module),一个模块就像一个函数,有输入输出,以及函数的主体。...上面的代码如果封装成一个模块,那么其输入可以是 security group 想要开放的端口,EC2 实例的大小,磁盘大小,使用的 AMI 的名字等等,而输出可以是 EC2 实例的 id,public...除了模块外,terraform 还支持各种各样的 provider,比如各个云服务商的基础设施相关的 provider,以及丰富的在软件生命周期内可能涉及的各种 IT 服务,比如管理代码的 github...前面都在吹 terraform 的特点和优势,我们也来看看 terraform 的问题: 1)状态管理还处在原始社会。...这使得 pulumi 上手的难度比 terraform 瞬间低了一个层级。 pulumi 另一个特点是使用你所熟悉的编程语言来编写 devOps 代码。

2.6K20
领券