博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Terraform,自动化配置与编排必备利器
阅读量:6372 次
发布时间:2019-06-23

本文共 1850 字,大约阅读时间需要 6 分钟。

hot3.png

 - Infrastructure as Code什么是 Terraform

Terraform 是一个安全、高效地部署、更改、版本化基础设施和的工具,可以用来管理多层次的资源。从上层的软件配置到底层的网络、系统配置都可以使用 Terraform 统一进行管理。

Terraform 用配置文件来描述一个应用。 Terraform 会将配置文件与当前环境对比后,生成一个执行计划,这个计划会列出为了达到配置文件中定义的状态所需要执行的操作,然后执行计划以达到期望的状态。

Terraform 通过插件机制管理不同的资源提供者,以此来接入各种资源,如虚拟机,存储,网络和各种应用服务。

Terraform 的主要特性Infrastructure as Code

将基础架构使用配置语法进行描述,这可以让的构建计划可以像其他代码一样进行版本化和追踪。

Execution Plans

Terraform 有一个规划步骤,它生成一个执行计划。执行计划显示当您调用时 Terraform 将执行的操作。使用这个功能可以保证操作基础设施时不发生意外

Resource Graph

Terraform 创建了一个所有资源的视图。这使得 Terraform 可以并行化没有依赖的创建与修改。

因此,Terraform 可以高效地构建基础架构。操作人员也能更加了解环境的结构。

Change Automation

Terraform 会自动的分析什么是需要修改的,从而避免了许多可能的人为错误。

Terraform vs. Other 

与 Terraform 类似的 Infrastructure as Code 工具大概有下面几种:

  • Chef:

  • Ansible:

  •  

下面将从几个方面来说明 Terraform 与其他工具对比的优势。

配置管理工具与编排工具

Chef、Puppet、Ansible、SaltStack 都可以称为配置管理工具,这些工具的主要目标是在已经存在的机器上安装和管理软件。

而 Terraform 和 CloudFormation 可以称为编排工具,更注重于以及相关服务的高级抽象。他们的工作重点是创建资源并且引导进行初始化。

而且在现在的环境下,大家使用容器等服务,镜像已经包括了软件的安装与配置。一旦你有了镜像,你需要的是一些服务器去运行它。

对于提供服务器这种需求,编排工具会比配置管理工具更适合做此类工作。

编程式语言与声明式语言

Chef 和 Ansible 希望你去一步步编写程序以达到最终所期望的状态。

Terraform、CloudFormation、SaltStack、Puppet 希望你去声明最终想要的资源与资源的状态,工具本身会自动分析达到想要的状态需要进行怎样的操作。

在使用编程式语言时,工具不会获取历史的状态,所以我们需要考虑的更多以达到与之前版本的兼容。

并且使用编程式语言会导致代码库变得越来越庞大,不利于人们理解与代码的复用。不过声明式的语言的表达能力是较为欠缺的,例如我们需要基础设施的滚动升级时,声明式的语言是很难满足要求的。

为此 Terraform 提供了一些基础服务,例如输入变量,输出变量,在销毁之前创建等。

客户端服务器架构与客户端架构

Chef、、 在默认情况下都使用了客户端服务器架构。客户端(可能是 Web UI 或 CLI 工具)是用来发出命令(例如 “deploy X”)的东西。

这些命令到达一个服务器,它负责执行你的命令并存储系统的状态。要执行这些命令,服务器会与  进行通信, 必须在要配置的每个服务器上运行,这有几个缺点:

  • 您必须在每台服务器上安装并运行额外的软件。

  • 为了配置管理,您必须部署额外的服务器(甚至是一组服务器以实现高可用性)。

  • 由于客户端,服务器和代理都需要通过网络进行通信,因此您必须为其打开额外的端口,并配置相互验证。

  • 这些配置会引入大量不同类型的故障,当收到错误警告时,必须要弄清楚是哪一部分出现了故障。

     

 也是客户端 / 服务器架构,但 AWS 透明地处理所有的服务器细节,作为最终用户,您只需要考虑客户端代码。Ansible 客户端则通过 SSH 直接连接到您的服务器。

 使用云提供商 API 来配置基础架构,因此除了您已经使用云提供商之外,没有新的身份验证机制,并且不需要直接访问您的服务器。

image.php?url=0KmVe64rrb

image.php?url=0KmVe60o4y

转载于:https://my.oschina.net/u/3635497/blog/2986940

你可能感兴趣的文章
rsync服务器搭建
查看>>
angularjs过滤器(number)
查看>>
同步、异步、互斥、信号量、阻塞、非阻塞
查看>>
黑盒测试的测试用例设计方法
查看>>
使用Ganglia监控系统监控集群(debian)
查看>>
dajngo 数据库事物的处理
查看>>
Java Socket 网络编程常见异常
查看>>
修改maven打包文件存放的目录
查看>>
openresty 前端开发轻量级MVC框架封装二(渲染篇)
查看>>
自定义分页标签
查看>>
python中itertools模块介绍---01
查看>>
在线学习的网站
查看>>
Git使用
查看>>
下雨了。。。我还在路上跑。。。
查看>>
Servlet+Jdbc简单实例(1)
查看>>
Apache POI之PPT
查看>>
鼠标点击,切换图片
查看>>
OSSIM5 自定义安装
查看>>
/etc/init.d/httpd: 112: /etc/init.d/httpd: lynx: n
查看>>
网站日志HTTP返回代码解析:201 304 404 500【知识普及】
查看>>