Terraform实战(一)-Terraform介绍与安装部署

1 IaC


基础设施即代码(Infrastructure-as-Code,IaC)意味着使用代码来定义和管理基础设施,用户不必在每次开发、 测试或部署软件时都配置环境。所有基础设施参数都以称为清单的文件的形式保存。

开发人员对基础设施配置文件进行编码,并将其存储在版本控制中。如果有人编辑了一个文件,拉取请求和代码审查 工作流可以检查更改的正确性。因此,与所有代码文件一样,清单易于重用、编辑、复制和共享,它使构建、测试、准备 和部署基础设施更快、更一致。

1.1 IaC的优势
借助自动化流程,IaC 协助企业以多种方式管理其 IT 基础设施需求。以下是部署 IaC 的部分优势:
提升架构一致性:IaC 可提高一致性并减少通常会在手动配置过程中发生的错误。其还能够消除手动流程期间可能 会发生的配置漂移。IaC 会整理和记录您的配置规格,进而协助您避免出现未记录的临时配置改变。
降低运维成本:IaC 可通过编程方式管理虚拟机,这样就不必手动配置硬件及更新。一位操作员使用同一组代码, 即可部署并管理一台机器或 1,000 台机器。这样就意味着,需要的员工减少,不必再购买新硬件,成本会因此大 幅降低。
提升操作效率:基础设施编码化可为您提供配置模板,进而简化系统配置、维护和管理。其可以打造出可重复、可 扩展的弹性基础设施。这也意味着,DevOps 能够加速软件开发的各个环节,每天能发布的应用也将更多。
加快部署速度:IaC 能将开发人员耗时冗长的配置工作转变为简单的脚本执行,通过脚本执行就能让其基础设施准 备就绪。因此,部署应用不再需要等待基础设施,新软件的发布也大大提速。
降低操作风险:IaC 也支持版本控制,因此,配置文件也会和其他任何软件源代码文件,归入源代码控制。如此, 风险就会降低。
服务器自动化和配置管理工具通常可以用来实现 IaC。当然,也有一些专门针对 IaC 的解决方案。 一些常见的方案 如下:

chef
puppet
红帽Ansible自动化平台
saltstack
terraform
AWS CloudFormation
AliyunROS资源编排
Tencent TIC资源编排 
1.2 IaC的两种方式
采用基础设施即代码的方法有两种。尽管两种方法都能让大多数 IaC 工具正常运行,使用哪一种取决于手上的任务。

1.2.1 声明式
声明式方法也称为功能性方法,明确定义了系统的理想状态,但未明确指出达到该状态的方法。这种方法可让您明确 名义想要的资源,包括必需的属性。IaC 软件会自动配置理想的基础设施,声明式 IaC 工具将会自动应用作出的任何改 变。声明式 IaC 可多次执行且结果相同,无需人为干预。既声明式通常都是幂等的。

如:AWS CloudFormation、hashcrop Terraform、Puppet。

1.2.2 命令(编程)式
相比之下,命令式方法可让您明确定义配置基础设施的方式,以及实现的方法。命令式方法也叫作过程式方法,明确定义了实现特定配置所需的命令。之后需要按照正确的顺序执行这些命令,一次一个步骤。这个方法较脆弱,依靠的是明确的指示,不接受任何更新。需要改变时,命令式 IaC 工具将会要求操作员解读应如何应用这些改变。

如:Chef、Ansible。

但也并不是说声明式就比编程式要好,而是要根据场景使用适合的工具

1.3 Terraform 工具在IAC的位置

1.4 为什么说 IaC 对于 DevOps 至关重要?
IaC是实施DevOps实践和持续集成/持续交付的一个重要组成部分。IaC免除了开发人员的大部分置备工作,开发人员只需要执行一个脚本即可让基础设施准备就绪;
Iac可让应用部署不再等待基础设施就绪,系统管理员也可解放繁琐复杂的手动部署流程;
CI/CD贯穿应用的整个生命周期(集成、测试、交付、部署)的持续自动化和持续监控;
IaC可保证基础设施和应用部署的集成、测试、交付、部署以一种标准化、流程化和一致性的方式运行,降低了手动流程的错误率,提升了交付速率;
1.5 IAC原则
当通过代码完成了基础设施的创建,而且创建出来的资源就是按照我们声明文件中那样描述的那样。这其实就是基础设施即代码的一种技术实现。基础设施即代码是一种使用新的技术来构建和管理动态基础设施的方式。它把基础设施、工具和服务以及对基础设施的管理本身作为一个软件系统,采纳软件工程实践以结构化的安全的方式来管理对系统的变更。基础设施即代码有四项关键原则:

再生性:环境中的任何元素可以轻松复制。

一致性:无论何时,创建的环境各个元素的配置是完全相同的。

快速反馈:能够频繁、容易地进行变更,并快速知道变更是否正确。

可见性:所有对环境的变更应该容易理解、可审计、受版本控制。

2 Terraform概述


2.1 介绍
Terraform 是一种安全有效地构建、更改和版本控制基础设施的工具(基础架构自动化的编排工具)。它的目标是 "Write, Plan, and create Infrastructure as Code"(编写、规划和创建基础架构作为代码), 基础架构即代码。

Terraform 几乎可以支持所有市面上能见到的云服务。具体的说就是可以用代码来管理维护 IT 资源,把之前需要手动操作的一部分任务通过程序来自动化的完成,这样的做的结果非常明显:高效、不易出错。

Terraform 提供了对资源和提供者的灵活抽象。该模型允许表示从物理硬件、虚拟机和容器到电子邮件和 DNS 提供者的所有内容。由于这种灵活性,Terraform 可以用来解决许多不同的问题。这意味着有许多现有的工具与Terraform 的功能重叠。但是需要注意的是,Terraform 与其他系统并不相互排斥。它可以用于管理小到单个应用程序或达到整个数据中心的不同对象。

Terraform 使用配置文件描述管理的组件(小到单个应用程序,达到整个数据中心)。Terraform 生成一个执行计划,描述它将做什么来达到所需的状态,然后执行它来构建所描述的基础结构。随着配置的变化,Terraform 能够确定发生了什么变化,并创建可应用的增量执行计划。

Terraform 是用 Go 语言开发的开源项目,你可以在 github 上访问到它的源代码。

什么叫资源编排?类似于 AWS控制台 、腾讯云控制台这些控制台,可以管理你的所有云资源,Terraform和控制台作用一样,本质都是管理你的云资源,只不过,控制台是界面化的操作,而Terraform是通过配置文件来实现。
————————————————
原文链接:https://blog.csdn.net/ygq13572549874/article/details/134842691

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值