前言
云计算
主要提供计算服务,例如服务器、存储、数据库、网络等等;
对于云服务,通常只需使用多少支付多少,从而帮助降低运营成本,使基础设施更有效地运行,并能根据业务需求的变化调整对服务的使用。
- 公有云: 多租户面向个人或企业由第三方云服务商托管和运营。
- 私有云: 专供一个企业或组织使用的云计算资源。私有云可以位于公司的数据中心。(自建或云供应商)
- 混合云: 组合公有云和私有云,通过云之间进行共享数据。
基础设施即代码
传统情况下,通过云供应商提供的基础设施资源管理控制台的页面来管理各种资源。
但GUI页面操作会带来一些问题:在多云或多个环境中变更多套复杂环境,易出现操作重复、人为失误,配置不一致等。
通过IaC(Infrastructure as Code,基础设施即代码)可以很好解决以上问题。
IaC将基础设施管理纳入应用程序的生命周期中,使用代码来管理和配置基础设施资源。
IaC允许开发者使用版本控制和自动化工具来部署和管理基础设施,就像管理软件代码一样。
Terraform简介
- 一个强大的开源基础设施即代码工具,定义、部署和管理基础设施
- 通过编写(Write)、计划(Plan)、应用(Apply)声明式配置文件来操作API接口
- 可在配置文件中定义云和本地资源,可以对其进行版本控制,重用和共享
- 提供一致的CLI工作流在整个生命周期内配置和管理所有基础架构及云服务
- 可以管理DNS条目、Saas功能等高級组件和计算、存储和网络资源等低级组件
Terraform解决的问题
Terraform 提供了一种统一的、受版本控制的基础架构管理方法。
解决了手工设置和管理基础架构的经常出现的配置不一致、重复操作和人为错误等问题,可以简易、灵活、可靠地扩展和管理复杂系统。
选择Terraform的理由
- 强大的社区
- 可以管理任何基础设施
- 对基础设施版本管理并跟踪
- 无需考虑底层逻辑,仅需声明配置
- 多云架构基础设施部署
- 创建河重用的基础架构
- 高效地基础架构扩展和部署
Terraform原理和流程
工作原理
- Terraform通过Provider这个与API直接交互的后端驱动来完成对云平台上基础设施资源的管理。
- 不同的基础设施提供商需要对应的Provider来实现对自家基础设施的统一管理。
- HashiCorp官方和Terraform社区已经编写了大量的Provider来管理数千种不同类型的资源和服务。
- https://registry.terraform.io/browse/providers
在实际操作中,Terraform和Provider是两个独立存在的package。
Terraform会在运行时根据用户模板中指定的provider或者resource、datasource的标志自动下载配置所用到的所有provider,并将其放在执行目录下的一个隐藏目录.terraform
下。
核心工作流程
1.Write阶段,即定义所需要的资源。这些资源可以是跨越多个云提供商和服务。
2.Plan阶段,Terraform 创建一个执行计划。将根据配置文件创建、更新或销毁基础架构。
3.Apply阶段,在批准后Terraform会按照资源依赖关系顺序执行。