「DevOps系列」 深刻理解Terraform

今天,我打算写一系列关于在生产环境中如何使用Terraform定义和管理基础设施即代码(如下简称IaC)的文章。若是你以前没有使用过,那么这里给一个简单的定义,Terraform是一种可让你经过简单的,可声明的编程语言来为各类云服务商(AWS,Azure,Aliyun等)定义基础设施而且用一些命令来部署和管理这些基础设施。shell

在Gruntwork,咱们使用Terraform 做为Infrastructure as Code Library的主要的IaC工具之一。这是一个为普遍使用的云厂商AWS,GCP和Azure提供超过300,000行可重复使用,通过实战考验的生产级别的基础架构代码的集合。在这篇介绍文章中,咱们会讨论咱们为何会坚信每一个软件公司都应该使用IaC。接下来咱们会讲到以下主题:数据库

  1. 为何咱们使用Terraform 而不是Chef,Puppet,Ansible,SaltStack。
  2. Terraform 简介
  3. 如何管理Terraform 状态
  4. 如何使用Terraform 模块建立可复用的基础设施
  5. Terraform小技巧:循环,条件语句,和各类坑
  6. 团队中如何使用Terraform

好了,如今言归正传。如今咱们开始深刻讨论下为何每一个互联网软件公司都应该定义他们的IaC。编程

为何须要基础设施即代码

之前,在遥远的一个数据中内心。一支古老而富有能力经验的为人所知的系统管理员手动来部署基础设施。每台服务器、路由表项,数据库配置和负载均衡器都是经过手动来建立和管理的。那是一个黑暗而恐惧的时代:担忧宕机,担忧意外配置文件错误,担忧缓慢而易错的部署。好消息是感谢DevOps的崛起,咱们如今能够有更好的方式来处理这些事情:Infrastructure-as-Code(IAC)。服务器

相比于点击Web界面或者SSH 到一台服务器,而后手动执行命令。IAC背后的想法是经过写代码来定义,拓展和管理你的基础设施。这有不少好处:微信

  • 你能够自动化你的整个扩展和部署程序,这使得比手动操做更加快速也更加可靠。
  • 你能够在源文件中表示整个基础设施的状态,这样任何人的均可以阅读,而不是只有管理员才知道。
  • 你能够版本化存储这些源文件,这意味着你的基础设施整个历史均可以在提交日志中追溯,这可让你debug 问题,同时若是必要,彻底能够回滚到旧版本。
  • 你能够经过代码审核和自动化测试来验证每次基础设施的变化。
  • 你能够建立(或者购买)一系列能够重复使用,通过实战考验的生产级别的基础架构代码的集合。

还有另一个重要切格外受关注的缘由:它会然让开发者更开心。部署代码是很枯燥和繁琐的任务。电脑能够快速而高校地作这些事情,可是人类就会效率低下而易犯错。还有,开发者会很反感工做。由于这没有任务创造力,挑战性以及受人承认。你能够月复一月地完美地部署代码,可是没人会在意和注意这些,知道有一天你出错了。架构

这些都创造了一种压力重重而又使人不快的环境气氛。而IAC 提供了更好的选择可让电脑和开发者只作他们自己擅长的事情。负载均衡

为何是Terraform?

有不少方式能够实现IAC,从最简单的手动建立shell 脚本到相似于Puppet、Ansible 等这样的管理服务。那为何咱们坚持选择Terraform最为咱们的IAC 工具呢?欲知详情,请看下一节——No1:为何咱们使用Terraform 而不是Chef,Puppt,Ansible。编程语言

天天三分钟,知识效率高。轻文章,更高效。工具

天天三分钟,知识更轻松。测试

欢迎关注同名微信公众帐号极客24h。

相关文章
相关标签/搜索