Terraform基础概念一
- 1.Infrastructure-as-Code(IaC)概念
- 1.1 IaC优势
- 1.2 IaC工具
- 1.3 IaC的两种方式
- 2.Terraform基础概念
- 2.1 Terraform工作原理
- 2.2 Terraform 工作流
- 3.总结
1.Infrastructure-as-Code(IaC)概念
基础设施即代码(Infrastructure-as-Code,IaC)意味着使用代码来定义和管理基础设施。简单理解来说,就是利用代码的方式来实现对基础设施配置,避免手动配置的繁琐和可能导致的错误。
1.1 IaC优势
借助自动化流程,IaC 协助企业以多种方式管理其 IT 基础设施需求。以下是部署 IaC 的部分优势:
- 提升架构一致性:IaC 可提高一致性并减少通常会在手动配置过程中发生的错误。其还能够消除手动流程期间可能会发生的配置漂移。IaC会整理和记录您的配置规格,进而协助您避免出现未记录的临时配置改变。
- 降低运维成本:IaC 可通过编程方式管理虚拟机,这样就不必手动配置硬件及更新。一位操作员使用同一组代码,即可部署并管理一台机器或 1,000 台机器。这样就意味着,需要的员工减少,不必再购买新硬件,成本会因此大幅降低。
- 提升操作效率:基础设施编码化可为您提供配置模板,进而简化系统配置、维护和管理。其可以打造出可重复、可扩展的弹性基础设施。这也意味着,DevOps能够加速软件开发的各个环节,每天能发布的应用也将更多。
- 加快部署速度:IaC能将开发人员耗时冗长的配置工作转变为简单的脚本执行,通过脚本执行就能让其基础设施准备就绪。因此,部署应用不再需要等待基础设施,新软件的发布也大大提速。
- 降低操作风险:IaC 也支持版本控制,因此,配置文件也会和其他任何软件源代码文件,归入源代码控制。如此,风险就会降低。
1.2 IaC工具
- Chef
- Puppet
- Ansible
- Saltstack
- Terraform
- AWS CloudFormation
- Aliyun ROS资源编排
- Tencent TIC资源编排
1.3 IaC的两种方式
- 声明式:声明式方法也称为功能性方法,明确定义了系统的理想状态,但未明确指出达到该状态的方法。这种方法可让您明确名义想要的资源,包括必需的属性。IaC 软件会自动配置理想的基础设施,声明式 IaC 工具将会自动应用作出的任何改变。声明式 IaC 可多次执行且结果相同,无需人为干预。如AWS CloudFormation、Terraform、Puppet
- 命令式:相比之下,命令式方法可让您明确定义配置基础设施的方式,以及实现的方法。命令式方法也叫作过程式方法,明确定义了实现特定配置所需的命令。之后需要按照正确的顺序执行这些命令,一次一个步骤。这个方法较脆弱,依靠的是明确的指示,不接受任何更新。需要改变时,命令式
IaC 工具将会要求操作员解读应如何应用这些改变。如:Chef、Ansible。
2.Terraform基础概念
2.1 Terraform工作原理
首先,Terraform
读取.tf
文件的内容,然后Terraform
通过RPC
的方式,根据供应商提供PROVIDES
,通过调用API
的方式生成云资源。
2.2 Terraform 工作流
3.总结
- Terraform是一个可以安全、高效地建立、变更、以及版本化管理基础设施的工具,可以在主流的服务提供商上提供自定义的解决方案;
- 以配置文件为驱动,在文件中定义所需要管理的组件(基础设施),以此生成一个可执行的计划,通过执行这个计划来完成所定义组件的创建、增量式的变更和持续的管理。
- Terraform不仅可以管理Iaas的资源,也可以管理更上层的服务,如PaaS,SaaS等。