前言
为什么要写这本书
首次接触Ansible是缘于一次杭州出差。当时接触互联网3年左右,正是技能的储备阶段,看到Ansible这样的新兴自动化工具不免充满好奇。当时腾讯的蓝鲸还没有出来,但abs脚本和ijobs自动化体系已经应用多年,并在整个IEG中心广泛应用。大型企业讲究分工精细化,各司其职,强大的自我研发能力。但伴随业绩和KPI的压力,很多人其实是没有多余精力关注外界技术领域的发展,尤其是游戏行业,行业自身属性对开发人员的技术能力要求非常高,前沿开源技术与业务特殊性需求并不能很好地融合,致使多数工具依赖于开发人员,整体运维体系以应用、发现、维护、服务方向为主,底层运维没有技术能力和资源协调能力为业务创造直接价值。高级运维和领导层更需着眼于高层面的业务拓展和整体运维体系规划,所以多数互联网前沿技术以技能储备的方式被引入,待机蓄力而发。
后来蓝鲸和ijobs融合后,在强大技术力的驱动下,运维的技术能力进一步淡化,对应的业务能力、需求发现、服务意识被强化,并提出更高的要求,DevOps的岗位定义更加明确。蓝鲸平台类似于苹果公司的App Store,是一个载体,只要有开发能力就可以编写自己的应用。只要应用的通用性足够高,所有业务都可以下载使用,而通用性则是开源技术最讲究的点。同时开源工具也是非常好的学习对象,往往经过简单的修改即可变成自己的产品,因此运维对开源技术的关注度越来越高,而笔者也正是在这样的背景下接触到Ansible。
对比主流的自动化工具SaltStack、Puppet等,Ansible给人最直观的感觉就是比较简单,而这也是笔者选择使用Ansible最重要的理由之一。因为笔者一直认为每个人精力有限,如腾讯早期的Ops技能培训希望个人同时兼备Ops和Dev的战略,但直到现在身边真正同时具备Dev和Ops能力于一身的人凤毛麟角。类似于Puppet和SaltStack这样的工具,高级使用均需涉及诸如Class类开发这样的技能才可运用,而初级运维和没有开发经验的运维掌握面向对象技术去开发高级应用确实没有那么妥当。Ansible早期的官网也是以Stupid Simple来形容其简单程度的,其前沿的去中心化思想和近期被RedHat(红帽)官方收购的消息,也更坚定了笔者使用Ansible的想法。
但当时Ansible在国内公司应用的并不多,且其官网屡屡被破解,使得虽然自动化的理念早已家喻户晓,但国内Ansible的文档和社区却始终不温不火。无独有偶,笔者发现腾讯也开始在自家蓝鲸平台使用Ansible,并结合业务进行了深入应用,所以就产生了编写一本Ansible书籍的想法。因此,也有了后来的Ansible官网中文翻译团队和本书写作团队,再后来也就有了Ansible中文权威网站、运维部落微信公众号、Ansible部落微信群、Ansible中文权威QQ群。更为幸运和开心的是,在坚持的过程中也遇到了一批自动化工具爱好者。http://www.ansible.com.cn/将Ansible官网中大家日常常用的部分功能翻译成中文,所以起名为Ansible中文权威指南。而后Google、Baidu的关键字搜索结果仅次于官网,这使得我们的信心大增。这里要特别感谢马哥Linux团队成员的薛定谔的章鱼、guli、以马内利、黄博文、coocla、云中鹤、stanley,这些朋友们历经数月,辛勤翻译多达5万字文档。
在一次和朋友聊天中,朋友问到你们Ansible已经应用这么久,同时也有自己独立开发的界面,现在国内Ansible的势头虽高,但文档和书籍欠缺,何不把你们的经验总结出来分享给更多朋友呢。我当时一怔,但也有担心:一方面精力不支,另一方面老婆怀孕,我担心生活工作不能兼顾。后来在老婆的鼓励下,经肖力和黄博文兄的引荐认识了华章公司的高编辑,正式开始书籍的编写之旅。在这个过程中,很高兴又有新的伙伴骑行牛人魏巍和Python能力出众的甘捷陆续加入,也使得个人的压力和精力有更多的释放,书籍的内容也有更完整、丰富的互补。在整个写书过程中我们也在成立的运维部落、Ansible公众号和QQ群,定期分享书籍内容,收集用户反馈和体验。到目前为止,QQ群近1300人,公众号也有2000多人在关注。群中也专门请行业应用经验丰富的专员来解答Ansible的技术类问题,同时成立专门的QA站点,收集用户QQ群问题处理方案,并对积极回答问题勇于分享的朋友定期寄送礼品以示鼓励。团队很高兴也很幸运能通过这样的方式为国内Ansible的发展贡献自己的力量。
本书特色
从技术层面讲,运维自动化理论及思想在国内日趋成熟,自动化工具更是遍地开花。现在运维不再纠结于没有工具可用,而是惆怅于选择何种工具。而Ansible正是在这样的大环境下产生,并且迅速脱颖而出。Ansible去中心化思想和“简单就是一切”的原则也使其在运维圈快速流行。但正如所有事物一样,入门简单并不代表深入简单,这也正是本书的意义所在。
从适合读者阅读和掌握知识的结构安排上讲,本书分为“基础入门篇”“高级进阶篇”“Web自动化开发篇”。本书在介绍新技术应用的同时更注重读者对技术的消化和接受程度,整个过程都秉承原理→练习→实战的思路,让读者轻松逐步深入,不会有生硬和突兀感。在介绍Ansible的核心技术应用Playbook章节更是不惜用50页左右的篇幅,通过企业实际案例讲解分析Playbook的使用技巧和经验心得。在Ansible企业应用实战相关章节,详细介绍Ansible与现今流行技术的结合使用,以及如何自我发展、自我完善技能。
在由浅入深介绍Ansible的同时,本书所有的应用案例按章节顺序全部上传至GitHub,附带自研的Web自动化页面,也全部开源至GitHub(同时本书写作团队收入的20%将捐赠给开源组织,捐赠金额和去向也会通过公众号和网站的方式对外公开)。
读者对象
❑IT网络运维工程师
❑业务运维工程师
❑DevOps技术人员
❑中小型企业无运维岗但需运维服务器的开发人员
❑虚拟化技术人员
❑对自动化理念感兴趣的技术人员
如何阅读本书
本书分为三篇,共14章,其中第1~3、6、8~10由李松涛编写,第4、5、7、11由魏巍编写,第8、12~14章由甘捷编写。
第一篇为基础入门篇(第1~5章),该篇着重介绍Ansible发展史,工作原理,基础元素组成,Playbook入门。该部分内容虽简单,却是掌握Ansible高级技巧的基石,如没有接触过相关自动化工具和Ansible,还需认真阅读。
第二篇为高级进阶篇(第6~11章),该篇也是本书内容的最大构成部分,着重结合企业实际需求场景,以大量的实际案例拓展介绍Ansible的高级语法进阶和实际应用技巧,涉及的技术点有Roles、Inventory、Jinja2、Galaxy等。结合的行业主流技术包括(但不限)Zabbix、Except、MemCache、Inotify、Logio、GitLab、Docker、LNMP、Redis、MySQL、Node.js等,并提供丰富的实战案例供大家参考学习。
第三篇为Web自动化开发篇(第12~14章),该篇内容主要针对不想购买Tower产品,但又有Web全自动化发布界面需求的人而专门撰写。该部分内容使用当前最流行成熟的Python,并结合Django前后端技术,通过Ansible celery管理后台任务队列。虽该部分内容从零基础部分开始介绍,逐步引导上手,但考虑时间和精力成本,建议具备一定的Python、Django、前端基础后进行学习。
本书前11章,各章没有强关联,如觉得内容已掌握可跳跃式阅读,遇到不理解的地方回头再看也问题不大。从第12章开始为Web化自动开发章节,需要循序渐进地学习,建议按顺序阅读。
勘误和支持
Ansible的发展非常快,当我们开始着手写这本书的时候Ansible的版本还是1.9.4,但没过多久2.0稳定版本就更新出来,但1.9版本分支还一直在维护,随后又陆续更新了1.9.5和1.9.6的稳定版,这对我们的写作也造成一定的困扰。当时多数公司使用的还是1.9版本的分支,2.0分支也陆续收到朋友们反馈各类问题。所以本书的写作过程总体还是基于1.9分支的基础,1.9和2.0的差别主要在于API接口和页面开发上,后者功能模块更加完善丰富,但对于普通使用者整体差别不大,有差别的地方书中均会提到。
由于笔者的水平有限,编写时间仓促,所有的写作过程都在深夜和周末,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果您有更多的宝贵意见,欢迎您关注我们的公众号linux178,或加入我们的QQ群:Ansible中文权威-2号群(486022616),或访问我们的问答平台http://www.178linux.com/qa,我们会尽量提供最满意的解答。期待能够得到你们的真挚反馈,在技术之路上互勉共进。
我想和作者聊聊
微信公众号:
linux178
或扫以下二维码
QA公共平台:
普通用户请加群:
Ansible中文权威-2号群 486022616
书籍读者请加群:
中文权威读者群577479881
致谢
感谢翻译团队在Ansible官网文档翻译过程中的无私付出。
感谢魏巍、甘捷两位“笔友”在我狂轰滥炸的“淫威”下坚持写作,并持续输出高质量的内容。感谢机械工业出版社华章公司的策划编辑高婧雅,在近一年的时间中始终支持我的写作。你们的鼓励和帮助引导我们顺利完成全部书稿。
特别致谢
最后,我要特别感谢我的太太yolanda,为写作这本书,我牺牲了很多陪伴她的时间,但也正因为有了她的付出与支持,我才能坚持写下去。
同时,也要郑重感谢马哥教育在我写作的过程中提供不遗余力的资源支持,让我们得以放开手脚无所束缚地完成写作工作。
谨以此书献给我最亲爱的家人,以及众多热爱开源技术的朋友们!
李松涛(stanley)
2016年8月