玩转云镜像制作之packer篇

1.DevOps之基础设施即代码(Infrastracture as Code)
什么是DevOps呢?按照维基百科的定义,DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

    在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。而DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。

    DevOps包含四个核心的部分,文化、自动化、度量和分享,而本文的重点是自动化。自动化的目标是就是将整个交付流程尽其所能的自动化,当然也包含基础设施管理的自动化,这也就意味着你的基础设施的管理不是通过手工的方式或者执行脚本来完成,而在传统的IT环境下,基础的硬件环境和软件环境的设置作为基础设施的关键部分是很难自动化的,但是随着云计算的兴起,通过可以机器处理的定义文件而不是物理硬件配置或使用交互式配置来管理和派生计算基础设施(进程,裸机服务器,虚拟服务器等)及其配置的过程变得越来越流行,也就是通过代码来管理基础设施,而这就是所谓的基础设施即代码(Infrastracture as Code)简写为IaC。

    IaC相比传统的方式,具有以下优点:

自服务性-如果基础设施是通过代码定义的时候,那么整个流程都可以做到自动了,开发人员在需要的时候就就可以自己发布,而不必等待运维人员来发布。
快捷而安全-由于整个部署过种都是自动化的,计算机执行的速度比人更快而且更完全。
文档化-在传统的方式下,基础设施的状态只存在于单个系统管理人员头脑中,而IaC以任何人都可以阅读的源代码的方式来保存基础设施的状态,也就说是源代码具有了文档的功能。
版本管理-你还可以将你的IaC代码使用版本控制工具管理起来,也就意味着你的基础设施变更历史是可以追踪的,这样当出现问题的时候,就可以通过查找历史来快速的定位和诊断问题。
可检验-因为基础设施的状态是以代码的形式管理的,这样任何变更都可以通过代码审查或者提前运行测试来检验。
可重用-你还可以将你的代码封装成模块,这样当有不同需求的时候,你就可以组装不同的模块来完成你的工作,而不是所有的情况都需要重头开始。
2.IaC的基石,镜像制作
随着越来越多的人认识到IaC的优势,各式各样的IaC工具被开发出来,它们分为以下四类:

Ad Hoc Script
配置管理工具
服务模板工具
编排工具
作为一种最直接的方式,人们使用通用语言编写各种Ad Hoc的脚本语言来完成基础设施的自动化工作,这种方式对于简单,一次性的工作很方便,但是对于复杂和长期的项目,你会发现维护这些脚本是一场恶梦。于是象Chef,Puppet和Ansible等配置管理工具出现,它们在通用语言的基础上定义相应的语法规则来安装和管理服务器上的软件,这些工具定义的代码和Ad Hoc脚本语言非常相似,但是它们强制要求代码具有结构化,一致性,可预测性,文档化和清晰的参数命名,而且它们能够远程管理大量的服务器。随着虚拟化和云计算的兴起,Packer,Docker等服务模板工具出现,模板工具的背后是镜像,相比于启动大量的服务器,然后在使用配置管理工具运行同样代码来重复安装软件和设置系统,镜像技术只需要捕获一个完整服务器包含操作系统,软件,文件和配置等经检验过的状态快照,然后通过Terraform等编排工具基于镜像来快速的创建服务器,数据库等等,这极大的提高了基础设施创建和

你可能感兴趣的:(工具,配置,软件,实例,镜像)