Puppet:维护运行环境一致性的利器

2019 年 10 月 28 日

Puppet:维护运行环境一致性的利器

配置管理工具的定位

每次我提到配置管理工具,有些同学就会问类似的问题:容器化时代和 Serverless 时代,还需要配置管理工具吗?我们先不去讨论容器化之后是否需要配置管理工具,那什么时候容器能够在全球范围达到 100% 的普及?什么时候 AWS 仅提供容器而不再提供虚拟机呢?

之所以会有如上的问题,根源还在于配置管理工具的定位,到底要解决什么问题?配置管理工具的厂商当然希望你什么事情都通过它来实现,在很长时间内,因为市面上没有针对运维各类场景的细分产品,因此配置管理工具就承担了多面手的角色,而随着各类细分产品的逐渐成熟,那些本不适合配置管理工具解决的场景,必然会被逐步替换。举个例子,你可以搜索到很多早期用配置管理工具进行服务部署的教程,但现在讲服务部署,恐怕很少会有人建议你使用配置管理工具了。

那配置管理工具的定位到底是什么呢?个人认为是持续保证运行环境的一致性,主要针对符合幂等性的变更操作,具体解释如下:

  • 持续保证,是要在机器的整个生命周期中始终确保最终结果符合预期,不论是何种原因导致的不同,都能够修正或者至少推送不一致信息出来。如果只是一次性的操作,那直接批量下去即可,哪里需要配置管理工具。

  • 一致性,主要是规模问题,如果只有一台机器,那这台机器就是标准,也就不会用到配置管理工具,因此配置管理工具主要是支持超大规模集群的一致性管理。

  • 符合幂等性的变更操作,也就是无论这些配置在该客户机上执行多少遍,每次的结果都是相同的。举例来说,维护 JVM 的版本为 x.x.x,这类操作,无论执行多少次,结果都是相同的。

  • 运行环境,通俗点就是安装完操作系统之后到部署服务之前这段环节的准备工作,比方说对系统参数进行优化,调整 DNS/NTP 等的配置,安装一些常用的工具,部署通用的客户端等等。大致的分类可以参考下图。类似于 JVM 这种和服务强关联的软件,在有些公司会将其定位为程序的一部分放在发布包中,而有的公司则会视其为运行环境的一部分,分类不同而已,起码大家不会把 NTP 的配置归入到程序包中进行管理而是交由运行环境保障。

原文链接:【 https://www.infoq.cn/article/eO3dfscjaWQEp5qi70em 】。未经作者许可,禁止转载。

登录后可解锁全站优质内容

免费畅享技术公开课、顶尖技术团队访谈、一线互联网大厂技术实践

文章
视频
电子书
研究报告
立即登录
2019 年 10 月 28 日 14:39 18643

评论 3 条评论

发布
用户头像
https://www.debian.cn/archives/1465 双11黑科技,阿里百万级服务器自动化运维系统StarAgent揭秘 这个文章还是值得参考的,尤其是其StarAgent。
2019 年 11 月 12 日 14:01
回复
用户头像
三种场景:
1,系统重装后执行一次
2,系统开机后执行一次
3,系统运行时定期执行
2019 年 11 月 04 日 11:43
回复
用户头像
一致性的检查,在Netflix中其实也有一些最佳实践可以参考,例如:Simian army
* Chaos Monkey,可以随机关闭生产环境中的实例,确保网站系统能够经受故障的考验,同时不会影响客户的正常使用。
* Doctor Monkey,查找不健康实例的工具,除了运行在每个实例上的健康检查,还会监控外部健康信号,一旦发现不健康实例就会将其移出服务组。
* Conformity Monkey,查找不符合最佳实践的实例,并将其关闭。例如,如果某个实例不在自动伸缩组里,那么就该将其关闭,让服务所有者能重新让其正常启动。
* Security Monkey,这是Conformity Monkey的一个扩展,检查系统的安全漏洞,同时也会保证SSL和DRM证书仍然有效。
* Janitor Monkey,查找不再需要的资源,将其回收,这能在一定程度上降低云资源的浪费。
* 10-18 Monkey,进行本地化及国际化的配置检查,确保不同地区、使用不同语言和字符集的用户能正常使用Netflix。
展开
2019 年 10 月 30 日 10:34
回复
没有更多评论了
发现更多内容

第九周作业

晨光

用Queue实现Stack,Moya网络框架,Sublime列操作,网络通信协议 非阻塞网络I/O NIO 数据库架构原理 John 易筋 ARTS 打卡 Week 11

John(易筋)

ARTS 打卡计划 数据库架构原理 网络通信协议 Moya 非阻塞网络I/O

创业公司技术体系建设-APM

星际行者

APM

N皇后问题的回溯法实现(C++)

老王同学

手写一个重入锁

诸葛小猿

synchronized CAS 重入锁 compareAndSwap ReentrantLock

第九周学习总结

赵龙

架构师训练营第九周学习总结

qihuajun

初识分布式:MIT 6.284系列(一)

Kerwin

分布式 MIT 6.284

Newbe.Claptrap 框架如何实现多级生命周期控制?

newbe36524

架构 微服务 微服务架构 .net core ASP.NET Core

这一周,我肝了公司的聚合代扣支付网关!

诸葛小猿

微信 支付宝 周期扣款 委托代扣 协议扣款

架构师训练营第九周作业

qihuajun

编程经典案例之函数

顿晓

函数式编程

程序的机器级表示-算术与逻辑运算

引花眠

计算机基础

<<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料

阿宝哥

前端 前端进阶 前端教程

飞天茅台超卖事故:Redis分布式锁请慎用!

程序员生活志

redis 分布式

什么?不写代码也能做功能开发! -RUOYI 教程二

HPioneer

Java 无代码开发 若依

ARTS打卡 第10周

引花眠

ARTS 打卡计划

老哥,您看我这篇Java集合,还有机会评优吗?

cxuan

Java 后端

第九周作业

赵龙

谈一谈webpack打包

林浩

JavaScript webpack 前端进阶训练营

系统设计系列之如何设计一个短链服务

看山

架构 面试 分布式 架构设计 短链服务

英特尔®AI计算盒参考设计发布 加速智能边缘崛起

飞天鱼2017

授人以渔:stm32资料查询技巧

华为云开发者社区

架构 armv8 芯片 华为云 二进制

第九周总结

晨光

JVM 垃圾回收原理

飞雪

JVM系列之:JIT中的Virtual Call

程序那些事

Java JVM JIT

Android |《看完不忘系列》之okhttp

哈利迪

android

架构师训练营第八章-作业1

A Matt

智能膜切机,解决手机贴膜行业难题

Geek_116789

计算机网络基础(十一)---网络层-OSPF协议

书旅

计算机网络 网络 协议栈 OSPF

技术管理者带团队的几个实用技巧

Phoenix

团队管理 企业文化 团队 价值观

众安黑客马拉松大赛总决赛-InfoQ小编探班

众安黑客马拉松大赛总决赛-InfoQ小编探班

Puppet:维护运行环境一致性的利器-InfoQ