[关闭]
@gaoxiaoyunwei2017 2018-12-23T09:02:48.000000Z 字数 4260 阅读 498

基于 Ansible 的主机自动化配置管理

白凡


分享:王奥
编辑:白凡

大家好,Ansible大家也都知道是一个配置管理工具,现在被收购了也是有一个商业化的服务支持。

今天是第十届GOPS大会,我从聆听者变为了演讲者,希望在座的各位也可以站在台上。

TIM截图20181212220811.png-40.4kB

我把主题的门槛定的低一些,这是一个比较 Low 的主题:

TIM截图20181212220852.png-82.6kB

1. 公司和技术架构介绍

我上一家单位是上海某交易所,目前在新加坡Sea,以下内容以交易所的Ansible实践为主。

TIM截图20181212221041.png-54.2kB

前两点都很好理解,不同行业侧重点不同。
从第三点来看,我们已经消灭了小机,金融机构消灭小机是个趋势,而且对于做标准化很有利。
第四点是内外网物理隔离,这个大家如果能理解物理级别的隔离就明白在管理上成本有多高,同时也面临个中安全合规上的各种要求,这是一个效率和安全的平衡过程。
第五点,我们由成熟的商业化集成方案逐步向开源节流转型。
第六点,现在已经流行 DevOps和 AIOps,《研发运营一体化 DevOps 标准体系及能力成熟度模型》现在已经评上了国际标准,大家都可以借鉴和参考,拥抱变化。

TIM截图20181212221206.png-89.4kB

这是我们之前中心所的解决方案,对于裸机和虚拟机的部署,我们知道成本都很高。
我们也在逐步转型 OpenStack,从最原生的 Bash Shell 到 Ansible 项目 v1.0。
我希望在下一界运维大会的时候能把我们的同事拖上来讲自主研发且支持商用的监控平台。

TIM截图20181212221520.png-62kB

我们为什么选 Ansible?跟大家的理解可能类似,灵活,它是没有客户端的,可以非常轻松地切换其他解决方案。
Puppet SaltStack 学习成本比较高,商业化产品无法满足个性化需求,基于 Ansible 二次开发就成为了一个十分理想的选择。

TIM截图20181212221552.png-60.6kB

这是我当时写的一个流行趋势,Ansible是相对于2012年出来的,它是后起之秀,远远高于其他的。

TIM截图20181212221630.png-55.3kB

2. Ansible 标准化学习路径

这是我们之前整理的一些官方的学习标准,包括我们内部的资料,如果大家想参考,欢迎跨行业的各位都去中心所,随时欢迎各位。

TIM截图20181212221710.png-46.2kB

TIM截图20181212221738.png-74.5kB

3. Ansible 项目实践

到这里我相信刚才我说的四个九,希望大家能理解用Ansible做什么,我这边提了两点,第一点标准化,这里的标准化很复杂,如果你一定要说的话,有硬件的标准化、软件的标准化,这里我们更多的体现是软件的标准化和硬件没有关系。

TIM截图20181212221845.png-41.7kB

3.1 Ansible 项目实践 - Linux

如果大家之前是托管的到最后就是私有云或者公有云,唯一不变的是你们自动化运维的能力,这点会让你们永远不会被淘汰。
所以,做标准化很重要。你给了Ansible,Ansible并不能帮你实现什么东西,但是你有了这个标准,你有了基线,你就可以利用这个,即使你不用Ansible,你也可以去做更多的事情。
中心所的目标很简单,我们去掉了小机,我们目标是把Linux和Windows管起来。
下面的时间我会比较快地做一个梳理,这些东西大家都可以看,它不是最重要的,最重要的是思想。
第一个服务端,Ansible很简单,我们是在RHEL6和7上打,服务端的Python版本我们用的是2.7.14。分水岭我们用的是2.4的分水岭,你需要考虑支持的话,一定要降版本。2.4以上Ansible变化非常大,因为它对于Windows的支持上了一个台阶,在2.4之前的版本,连Ansible官方都写我们做Ansible不是为了管Windows,甚至我管Windows很弱。按照从2.4开始到现在2.6管理起来非常非常方便。
管理的对象,我们这边主要是针对5、6、7,包括最新的版本。还有基线的标准,这个是很多公司想要的,因为这是一个前提,这一点欢迎大家去中心所交流,因为有专门的团队在做。

TIM截图20181212221928.png-73.9kB

这边是一个思维导图,从这个图里可以看到这个结构非常简单,Ansible就是两块,一块是inventory,第二点是playbook,主要有四个功能,我们后面会讲。

TIM截图20181212222030.png-75.9kB

服务端也说了,客户端安装的时候,一般只有RHEL5.5需要安装,其他的都不用了,很方便。

TIM截图20181212222055.png-52.2kB

可以看到,这就是一些最基本的纯命名的,而且是可以很灵活讲的,没有一点是死的。

TIM截图20181212222144.png-100.9kB

配置文件,这里我们也很简单,因为我们的关联方式包括传统密码,下面有个做优化,我们设了一个缓存,我们是做了一个另类的CMDB,我们不用数据库,这点可以脱离其他的,我推荐大家试一下。配置路径每个用户可以有多版本共存。

TIM截图20181212222214.png-81.5kB

下面是Ansible的一些变量,后面都写了非常详细的解释,这些我认为很基础,大家看了之后,包括看官方文档会很清晰。

TIM截图20181212222316.png-82.8kB

TIM截图20181212222336.png-106.4kB

这些我们建了用户,目前主要的核心功能是用户,我们做到不仅是创建用户,包括我们公司在管理,相当于就是完整的一个用户管理系统。

TIM截图20181212222415.png-63.1kB

TIM截图20181212222432.png-65.1kB

第二个,我们是动态化的,第三个我们的补丁包,大家都会遇到突然哪天一个漏洞出来,用它非常的方便。最后有一个备份恢复非常重要,因为在做之前,备份我认为是一个非常重要的前提。因为我们不能保证在不同的平台下,你每次做执行结果都是一样的,有可能出现一些意外。之前我们在虚拟机上测试,后来放到新的电脑上测试,结果给它搞坏了,导致了服务器要重装,所以说备份很重要。

这是一些简单模块的处理,我认为没有必要多讲,大家事后可以做参考。

TIM截图20181212222500.png-110.1kB

TIM截图20181212222515.png-92.6kB

这是现在的关系,这边Ansible做的条件过滤判断非常方便,但这又是比较低效的。如果你们能做好,有自己的CMDB的话,我希望直接传是的是操作系统,而不是让Ansible帮你判断,Ansible虽然很快,但是牺牲的是效率。

TIM截图20181212222857.png-73.6kB

3.2 Ansible 项目实践 - Windows

下面的是Windows,我相信用Ansible很少用它来管Windows,因为大部分人没有需求,但是我们公司有,所以我们就得硬着头皮上。这边的管理方式跟那边一样,唯一不同的是我建议安装2.4的版本,包括最新的2.6也支持。

TIM截图20181212222948.png-73.2kB

这边有一个Windows的安全基线,我们全部写得清清楚楚,我们都有完整的基线。

TIM截图20181212223006.png-92.3kB

这边的目录结构也是跟Ansible差不多,这上面写的安装可能是稍微有一点区别,你要在你的服务端稍微更新一些东西,你要做的是客户端原先没有的你需要升级,然后Windows因为我们要两个版本,就可能是不同的,需要升级Powershell。

TIM截图20181212223029.png-59.5kB

这里设置相同不需要改变,这里一些自定义的参数变量,大家后面仔细看都能发现,其实都是跟Windows相关的,跟我们基线相关的东西。把这些整合到里面以后,现在我们用自定义的方式去变可以更方便地定义,而且不用担心错误。

TIM截图20181212223100.png-109kB

TIM截图20181212223119.png-83kB

TIM截图20181212223140.png-97kB

TIM截图20181212223159.png-114.5kB

用户也是一样的,你改密码的话,目前没有特别好的方式去改,因为改完了会报错,但实际上是改成功了,这是一个坑。

TIM截图20181212223217.png-53.3kB

TIM截图20181212223241.png-63.8kB

TIM截图20181212223307.png-64.2kB

整个的配置流程也是差不多,我们保持了一致性,这也是Windows的原生模块,这边是Windows的条件系统判断,它支持中文,你不用担心它对中文不友好,它支持中文。

TIM截图20181212223325.png-68.9kB

4. Ansible v1.x 项目总结

我们最后看一个比较简单的爽,为什么爽?我们原来那个人离职了,发现用不了,我们发现我们好像也用起来不是很爽,因为我们有一些安全的要求。最后选了Ansible是有一定的妥协,当时用的时候是2.4以前的版本,对Windows的支持是个迷,你要顶着这个压力往上走。左边是我们写的代码,原来写的代码非常非常复杂,当时我的领导一个人写的,你要知道支持另外两个操作系统有多么的不容易,他都做到了,我们想在这个基础上改,很痛苦,看不懂。

TIM截图20181212223340.png-178.4kB

右边是我们传统的用EXCEL书写的,这些我们现在都可以转换成Ansible。我们这边用它有几个好处,第一个使用场景标准化,因为我们通用的是X86服务器,无论是物理机还是虚拟机它都支持。第二个我们没有小机,很幸福,我们也很少有开源的,我们很支持,第三个我认为很重要的一点,我们适配了不同的配置场景,而且我们不止步于Baseline,原来我们要拖很久,我们要去改很复杂,现在我们实时就可以改,实时就可以测试。

第四点Ansible的版本非常稳定,而且升级非常方便,大家不用担心装了版本之后我要升级是不是很麻烦很复杂,没有的事。你可能只要升级一个终端。
现在我们整合到一起,用Ansible统一突破了不同的部门墙。跨岗位的需求我们都可以快速地迭代实现,所有的人都可以看到你的变化,我们用Ansible做了一些同步。

TIM截图20181212223525.png-94.7kB

我相信大家现在用Ansible也没有什么好犹豫的,因为社区很活跃,知识库也很丰富。当时我们看不清楚,我们想的是怎么去破冰,没有想涉及所谓的鱼丸,我们想让运维人员去喜欢、去适应。

第三点最痛苦的地方是我们怎么把原来的Baseline转化为Ansible,即便我离开了剩下的人都可以很快地上手,我觉得这是最重要的一点,为什么要用开源,这是有标准化的支持。
第四点是Ansible早期版本对Windows不友好,我们当时处理很痛苦,到现在我们发现已经有了良好的支持,大家可以大胆放心地使用。
第五,内网隔离的情况下,网络不通,没办法连外网,这时候使用Ansible是可以很通用的,可以很好地解决。
第六个是Windows和Office的补丁如何打,我们只是想规避那些受政策、受合规性的补丁,我们全公司做了桌面虚拟化,用的比较超前的,我们要真正买个补丁打,使用Ansible也可以实现,而且也都测试过。
最后,无论我这边分享的也好,还是其他的各位分享的都是有上百次的失败都是大家通力合作的结果。

TIM截图20181212223555.png-95.7kB

5. Ansible v2.0 项目

这原来只是一个计划,现在在新加坡的公司已经不是计划了,他们用的方向没有错,Python2.7、3.6混用很厉害。

TIM截图20181212223619.png-68.8kB

6. 友情推广

这里有一个友情推广,我希望有更多的人能站上来分享,因为交易所相对来说比较神秘,但却是做了很多的事情。比如LightCam完全自主研发并支持商用的监控平台,我们的AOP自动化运维平台,我们想要做的是希望能放进去的东西都是能自动被做出来的,用人来做的事情始终会犯错,只要信息不准确就意味着你是不能做的。

TIM截图20181212223642.png-68.4kB

项目实施类的大家都在做,我们有一个项目是做View跨版本升级以及华为的FusionCloud的对比。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注