基础设施即代码工具Terraform的一些典型使用场景
Terraform是什么
HashiCorp Terraform 是一种基础架构即代码工具,可让您在可读的配置文件中定义云和本地资源,您可以对其进行版本控制、重用和共享。 然后,您可以使用一致的工作流程在整个生命周期内配置和管理所有基础架构。 Terraform 可以管理计算、存储和网络资源等低级组件,以及 DNS 条目和 SaaS 功能等高级组件。
Terraform 通过其应用程序编程接口 (API) 在云平台和其他服务上创建和管理资源。Providers组件使 Terraform 能够通过可访问的 API 与几乎任何平台或服务一起工作。
可以在 Terraform Registry 中查找使用许多平台和服务的Providers定制组件。 你也可以自己开发一个。 Terraform 采用不可变的方法管理基础设施(如果你需要安装/升级虚机或虚机系统软件的版本,只有创建个新版本的虚机,以旧换新),这降低了升级或修改服务和基础架构的复杂性。关于不可变的基础设施 VS. 可变的基础设施,二者的概念与技术选型上的权衡,可以看下这篇文章:以不可变更的方法管理基础设施。
Terraform常见的几类使用场景
本文描述了流行的 Terraform 用例。
多云环境管理
跨多个云环境来部署配置基础设施时,有效提高了技术系统的容错能力,允许从云服务商的故障中断事件中进行更优雅的恢复。 然而,多云部署增加了复杂性,因为每个提供商都有自己的界面、工具和工作流程。 Terraform 允许您使用相同的工作流程来管理多个云服务商并处理跨云的依赖项。 这简化了大规模、多云基础架构的管理和编排。
应用程序基础设施部署、扩展和监控工具
您可以使用 Terraform 高效地部署、发布、扩展和监控复杂应用程序的基础设施。 N 层应用程序的部署架构允许独立地扩展某一个层次的应用程序组件。 一个应用程序可以包含一个使用数据库层的 Web 服务器池,以及其它附加的用于 API 服务器、缓存服务器和路由网格的层次。 Terraform 允许您统一管理每一层中的资源,并自动处理层之间的依赖关系。 例如,Terraform 将在部署、配置 Web 服务器之前,先行部署一个被依赖的数据库层。
自助服务集群
在大型组织中,您的集中式运营团队可能会收到许多重复的基础设施资源请求。 您可以使用 Terraform 构建“自助式”基础设施模型,让产品团队独立管理自己的基础设施资源。 您可以创建和使用 Terraform 模块,这些模块遵循了在您的组织中部署和管理服务的统一标准,从而允许团队根据您的组织的最佳实践有效地部署服务。 Terraform Cloud 还可以与 ServiceNow 等票务系统集成,以自动生成新的基础设施请求。
政策合规与管理
Terraform 可以帮助您更好地执行组织的资源使用管理策略,以规范团队可以配置和使用的基础设施资源。 传统的资源申请审查流程是一个处理瓶颈,可能会减慢开发任务的速度。 相反,您可以使用 Sentinel(一种策略即代码框架)在 Terraform 进行基础设施的更改之前自动实施合规性和治理策略。 Sentinel 可用于 Terraform Cloud 团队和治理层。
PaaS 应用程序设置
Heroku 等平台即服务 (PaaS) 供应商允许您创建 Web 应用程序并附加组件,例如数据库或电子邮件提供商。 Heroku 可以弹性扩展 dynos 或 worker 的数量,但大多数重要的应用程序需要许多附加组件和外部服务。 您可以使用 Terraform 编写 Heroku 应用程序所需的设置,配置 DNSimple 以设置 CNAME,并将 Cloudflare 设置为应用程序的内容加速网络服务 (CDN)。 Terraform 可以在没有 Web 界面的情况下快速、一致地完成所有这些工作。
软件定义网络
Terraform 可以与软件定义网络 (SDN) 交互,以根据其中运行的应用程序的需要自动配置网络。 这使您可以从基于工单的工作流程转变为自动化工作流程,从而减少部署时间。
例如,当向 HashiCorp Consul 注册服务时,Consul-Terraform-Sync 可以自动生成 Terraform 配置并调整具有关联 Terraform 提供程序的任何 SDN 的网络设置。 网络基础设施自动化 (NIA) 允许您安全地批准应用程序所需的更改,而无需手动处理。
Kubernetes
Kubernetes 是用于容器化应用程序的开源工作负载调度程序。 Terraform 允许您部署 Kubernetes 集群并管理其资源(例如,pod、部署、服务等)。 您还可以使用 Kubernetes Operator for Terraform 通过 Kubernetes 自定义资源定义 (CRD) 和 Terraform Cloud 来管理云和本地基础设施。
并行环境维护
您可能拥有用于在生产中发布新应用程序之前测试新应用程序的staging或 QA 环境。 随着生产环境变得越来越大和越来越复杂,为开发过程的每个阶段维护一个最新的环境变得越来越困难。 Terraform 可让您快速启动和停用用于开发、测试、QA 和生产的基础设施环境。 使用 Terraform 根据需要创建一次性环境比无限期地维护每个环境更具成本效益。
软件演示
您可以使用 Terraform 在各种云服务商上创建、配置和启动一个演示环境。 这让最终用户可以轻松地在他们自己的基础设施上试用该软件,甚至使他们能够调整集群大小等参数,以更严格地测试任何规模的工具。
基础设施即代码工具Terraform的一些典型使用场景相关推荐
- 基础设施即代码:Terraform和AWS无服务器
基础设施即代码 基础设施即代码(IaC)是一种通过机器可读的定义文件管理设备和服务器的方法.从根本上说,你要写下你希望基础设施是什么样子,以及应该在该基础设施上运行什么代码.然后,按下一个按钮,说&q ...
- 【云原生 • Terraform】基础设施即代码工具力荐
目录 前言 Terraform 如何工作 为什么要使用Terraform? 管理任何基础设施 跟踪基础设施 自动化变更 标准化配置 Terraform 安装 举个栗子 使用nginx 镜像启动一个名为 ...
- 《基础设施即代码》阅读摘要
读书评价 上个周末读了下这本书,第一部分的基础理论,或者说是指导思想部分,还是蛮有启发性的.DEVOPS已经发展了这多年了,大家多少都已经有一些认识或实践了,读读这本书,一方面可以印证下你的理解是否正 ...
- Terraform 基础 云计算概述 基础设施即代码
云计算概述 lac基础设施即代码 什么是Terraform 在开始学习Terraform之前,要了解这个工具到底解决了什么问题 了解背景基础设施变化 企业上云,可提高资源配置效率.降低信息化建设成本( ...
- 基于 Kubernetes 的基础设施即代码
11 月 9.10 号两天,.NET 社区第一次以".NET 大会"为品牌在上海召开了第一届峰会,现场与会者达到 600 人规模.大会的第 1 天是各类演讲分享,第 2 天有多个动 ...
- 云原生时代,为什么基础设施即代码(IaC)是开发者体验的核心?
作者 | 林俊(万念) 来源 |尔达 Erda 公众号 从一个小故事开始 你是一个高级开发工程师. 某天,你自信地写好了自动煮咖啡功能的代码,并在本地调试通过.代码合并入主干分支后,你准备把服务发布到 ...
- 基础设施即代码(Infrastructure as Code)
2000年之后,硬件虚拟化的兴起催生了云基础设施托管的新机遇.云厂商开始提供对动态Infrastructure as a Service(IaaS)平台的访问.随着这些平台的发展并开始提供更复杂的基础 ...
- 基础设施即代码:一场变革即将到来
出品 | <新程序员>编辑部 作为一种基于软件开发实践的基础设施自动化方法,基础设施即代码(Infrastructure as Code,可缩写为IaC)如今较为常见,但面临不断演变的技术 ...
- 从技术雷达看DevOps的十年 – 基础设施即代码和云计算
在上一篇文章中,我们讲到了 DevOps 和持续交付的关系.本篇将回顾最先改变运维工作的相关技术 -- 基础设施即代码和云计算,通过技术雷达上相关条目的变动来跟踪其趋势变化. 和持续交付一样,基础设施 ...
最新文章
- 如何为模型选择合适的损失函数?所有ML学习者应该知道的5种回归损失函数
- java datetime和date_Java 8时间接口localDateTime和Date的对比
- JavaScript 正则表达式的使用
- 输出字符数字空格个数
- ROS 总结(三):Moveit!配置助手
- 【征稿进行时】计算机与智能控制主题征稿,ICCEIC 2020持续征稿中!
- Mybatis与Spring整合之配置文件方式
- kafka集群编程指南
- 什么是软件开发中的 green field 和 brown field 模式 - 绿地开发和棕地开发
- Programming Assignment 5: Burrows–Wheeler Data Compression
- keepalived脑裂问题查找
- Github:深度学习文本检测识别(OCR)精选资源汇总
- ubuntu 开机黑屏
- swift-01-利用元组判断字符串出现次数
- Linux 网络编程基础(一) ---------------客户端/服务器的简单实现
- python图书馆管理系统源代码_python代码实现图书管理系统
- 大数据时代下的Scrapy爬虫框架
- mac 中的 zip 和 unzip 命令
- (三) 搭建cocos2d-x-android环境 Windows XP3 + Eclipse + NDKR7(或ndkr7b)+COCOS2DX(没有用到cygwin和minigw)
- Cesium-Fullscreen全屏显示