今天,我打算写一系列关于在生产环境中如何使用Terraform定义和管理基础设施即代码(如下简称IaC)的文章。若是你以前没有使用过,那么这里给一个简单的定义,Terraform是一种可让你经过简单的,可声明的编程语言来为各类云服务商(AWS,Azure,Aliyun等)定义基础设施而且用一些命令来部署和管理这些基础设施。shell
在Gruntwork,咱们使用Terraform 做为Infrastructure as Code Library的主要的IaC工具之一。这是一个为普遍使用的云厂商AWS,GCP和Azure提供超过300,000行可重复使用,通过实战考验的生产级别的基础架构代码的集合。在这篇介绍文章中,咱们会讨论咱们为何会坚信每一个软件公司都应该使用IaC。接下来咱们会讲到以下主题:数据库
好了,如今言归正传。如今咱们开始深刻讨论下为何每一个互联网软件公司都应该定义他们的IaC。编程
之前,在遥远的一个数据中内心。一支古老而富有能力经验的为人所知的系统管理员手动来部署基础设施。每台服务器、路由表项,数据库配置和负载均衡器都是经过手动来建立和管理的。那是一个黑暗而恐惧的时代:担忧宕机,担忧意外配置文件错误,担忧缓慢而易错的部署。好消息是感谢DevOps的崛起,咱们如今能够有更好的方式来处理这些事情:Infrastructure-as-Code(IAC)。服务器
相比于点击Web界面或者SSH 到一台服务器,而后手动执行命令。IAC背后的想法是经过写代码来定义,拓展和管理你的基础设施。这有不少好处:微信
还有另一个重要切格外受关注的缘由:它会然让开发者更开心。部署代码是很枯燥和繁琐的任务。电脑能够快速而高校地作这些事情,可是人类就会效率低下而易犯错。还有,开发者会很反感工做。由于这没有任务创造力,挑战性以及受人承认。你能够月复一月地完美地部署代码,可是没人会在意和注意这些,知道有一天你出错了。架构
这些都创造了一种压力重重而又使人不快的环境气氛。而IAC 提供了更好的选择可让电脑和开发者只作他们自己擅长的事情。负载均衡
有不少方式能够实现IAC,从最简单的手动建立shell 脚本到相似于Puppet、Ansible 等这样的管理服务。那为何咱们坚持选择Terraform最为咱们的IAC 工具呢?欲知详情,请看下一节——No1:为何咱们使用Terraform 而不是Chef,Puppt,Ansible。编程语言
天天三分钟,知识效率高。轻文章,更高效。工具
天天三分钟,知识更轻松。测试
欢迎关注同名微信公众帐号极客24h。