巧用Terraform和Packer开源工具完成云上自动运维

  • 时间:
  • 浏览:0
  • 来源:大发彩神app—大发彩神8苹果版

上图是Packer的典型模板,最重要的是builders和provisioners。builders的type决定镜像的用处,provisioners底下定义镜像要做的任务。

云计算的特点是开箱即用,都时需随时扩缩容,不想考虑硬件的损坏什么的问题,但会 有充裕的云平台和云产品供选择。

2017年在线技术分会——运维/DevOps在线技术峰会上,来自阿里云的黎山分享了利用开源DevOps工具完成云上的自动运维的实践。她首先通过对另一个应用场景的分析引出了“自动化能自动化的一切”的理念。但会 介绍了使用Terraform和Packer开源工具完成云上自动运维的具体实现过程。最后对多工具组合案例进行了分享。

场景5的需求是扩容一台与线上应用一致的ECS。具体的操作流程是利用Packer去创建镜像,把提供服务的应用打到镜像中,用Terraform去创建ECS及但会 资源,创建ECS的以前选择Packer打出来的ID。变更的以前只时需修改Terraform的模板,把ECS变量的参数加1。

都时需利用Packer制作镜像,生成镜像ID,但会 用Terraform的模板指定镜像ID,创建ECS,你这人ECS就自带了所要提供应用的服务。你这人方案的好处是一次制作、重复利用,免去每次创建机器、安装服务的重复过程。

上图是VPC集群的资源拓扑图,从下往上有VPC、VSWITCH,有安全组的规则作用在安全组上,VSWITCH下有一另另一个实例,即别名worker的ECS实例和别名为master的ECS实例。eip绑定在别名为master的实例上,自定义路由的下一跳指定的是别名为master的实例。

亲们属于HashiCorp家族。亲们具有两大特点:支持多平台,开源。

Terraform的安装如上图所示。

随着应用的增加,ECS、SLB等资源也在增加,希望通过“打标签”区分哪几个资源属于哪几个应用,将资源按照应用分组。此时时需找到资源和应用的对应关系,再把每个资源都打上标签。

上图是Terraform的一另另一个模板,其最重要的是resource,其后有一另另一个字串(资源名称是固定的,别名可自定义)。安全组规则中,alicloud_security_group_role是固定的,都时需定义安全组的出网入网规则、端口、规则作用的安全组、指定网段。对于ECS实例,都时需指定instance的name、镜像ID、实例类型、创建的数量(count)、ECS的安全组、收费类型、速率 、不是 IO优化、不是 分配公网IP、可用区、实例的收费类型、系统盘类型等。SLB同样都时需指定name、收费类型等。SLB挂载定义了SLB和instance的主要参数。

应用3与应用2的基础设施要求一样。此时时需按照固定流程手工再做一次重复的工作。以前人员流动,文档不全,会意味着接手的人时需几天的时间熟悉环境及各种配置。

以下内容根据直播视频下发而成。

应用2深受市场欢迎,流量暴增,时需增加ECS以承载更多的并发和访问量,时需扩容一台与线上应用一致的ECS,挂载到SLB上。此时,时需四步来完成上述任务:将应用的ECS打快照、生成镜像、基于此镜像创建ECS、加进到SLB。

某应用1,为了增大吞吐率,做了流量均衡避免、扩大并发数、缩短延迟,选择了将两台ECS挂在一另另一个SLB基础设施上的组合。要实现上述架构时需进行以下另一个步骤来完成基础设施的构建:创建ECS、创建安全组、加进安全组规则、创建SLB、加进后端服务器、配置监听端口、配置会话保持、加进健康检查。

Terraform最重要的一另另一个命令是plan、apply和destroy,plan命令会在执行以前看多参数的所有值以及要创建哪几个资源,以前要能 什么的问题一段话就执行apply去真正创建哪几个资源,都时需通过destroy做销毁。

通过以上场景分析,亲们发现操作流程是有序可循的,配置是固定的。以前完正由手工操作来完成一段话,速率 低、时间长,以前意味着错误,变更要能回滚,过程要能 历史记录,过程要能审计(我什么都 知道是谁做了哪几个样的操作)。避免上述什么的问题的法律妙招是自动化。

Packer主要的思想是通过模板来定义但会 内容但会 创建镜像。在此过程中,Packer支持基于创建阿里云基础镜像创建镜像,以及基于自定义镜像创建镜像,会根据模板定义自动创建经典网络ECS以前是VPC网络的ECS。在ECS之上安装相关的应用,并把ECS打一另另一个快照,根据快照生成镜像,当镜像创建完成以前释放掉过程中创建过的资源,最后还都时需做进一步的操作,比如弹性伸缩、共享镜像、克隆qq镜像。

上图有三条主线,第两根是利用Packer去生成镜像,自动存储在镜像列表中,用Terraform去自动创建更新以前销毁哪几个基础设施。在创建ECS的以前都时需选择Packer创建出来的镜像ID,并肩在运行期都时需使用Ansible去管理哪几个基础设置以前管理ECS底下的应用。

都时需利用Packer把应用打在镜像中,通过ESS做伸缩,都时需用Terraform创建ESS的模板做弹性伸缩。什么都 用户做弹性伸缩的过程中很麻烦的但会 是在最初的以前ECS所用的镜像是基础镜像(只一另另一个操作系统的镜像),要能 弹出来的机器是要能提供服务的实例,结合Packer则都时需避免你这人什么的问题。

应用2的特点是时需做网络隔离,时需将其整个的应用架构搭在VPC网络内,并肩有对外网络访问的需求,并肩如果应用对外提供服务。什么都 ,整个的架构是VPC下面有一另另一个子网,通过NAT网关和共享速率 包提供对外请求,但会 通过负载均衡提供入网能力。要实现以上架构时需七个步骤:创建VPC、创建VSWITCH、创建NAT网关、新建共享速率 包、创建ECS、创建SLB、创建SNAT、挂载SLB。

前面的思想都时需归纳为一段话:自动化能自动化的一切。其优点是:用代码描述基础设施的创建、变更、销毁;代码编写好,验证也是正确的,以前每次执行任务如果会出错;非常快速,高效;代码代替文档,有历史记录,可回滚,不想担心文档更新不及时或人员流动带来的“黑盒”什么的问题;不想通过访问生产环境,就能知道生产环境上的配置情況;提高整个团队的DevOps能力。

将Terraform和Ansible做结合。Terraform在执行完成之如果在本地生成一另另一个tfstate文件,利用开源插件Terraform Inventory都时需通过tfstate生成Ansible Inventory(用来做机器分组)。Ansible都时需通过读Inventory文件对指定的分组做管理或应用配置。