新書推薦:
《
黄金、石油和牛油果:16件商品中的拉丁美洲发展历程
》
售價:NT$
395.0
《
母亲的选择:看不见的移民保姆与女性工作
》
售價:NT$
340.0
《
城邦政治与灵魂政治——柏拉图《理想国》中的政治哲学研究
》
售價:NT$
590.0
《
3分钟漫画墨菲定律:十万个为什么科普百科思维方式心理学 胜天半子人定胜天做事与成事的权衡博弈之道
》
售價:NT$
249.0
《
1911:危亡警告与救亡呼吁
》
售價:NT$
349.0
《
旷野人生:吉姆·罗杰斯的全球投资探险
》
售價:NT$
345.0
《
笼中王国 : 18世纪法国的珍禽异兽与社会文化
》
售價:NT$
340.0
《
思考的框架3 巴菲特芒格马斯克推崇的思维方式 风靡华尔街的思维训练法 沙恩·帕里什 著
》
售價:NT$
295.0
|
內容簡介: |
全书分为3篇:1.基础篇详细讲解运维自动化发展历程,Ansible部署安装、发展史、基础入门、Playbook使用及应用场景,特别对YAML语言进行基础普及,以避免读者只知其一不知其二。2.中级篇重点介绍Ansible与当前各流行App应用结合使用,如ELK、ZABBIX、DOCKER等,通过实战案例说明Ansible的正确使用方式。针对Playbook常用功能模块的使用等进行重点剖析介绍。3.高级篇主要介绍Ansible的Web自动化之路,为大家介绍Web自动化逐步实现过程,并同步开放源码以方便大家研习。通过阅读本书,读者不仅熟悉并应用Ansible,ansible-playbook,初步实现脚本自动化,同时还能实现Web自动化,从根源解放运维双手。
|
目錄:
|
Contents?目录本书赞誉前言第一篇 基础入门篇第1章Ansible基础入门21.1Ansible是什么21.2Ansible发展史41.3为什么选择Ansible51.4Ansible是如何工作的61.5Ansible通信发展史81.6Ansible应用场景111.7Ansible的安装部署121.7.1PIP方式131.7.2YUM方式131.7.3Apt-get方式141.7.4源码安装方式141.7.5验证安装结果151.8Python多环境扩展管理161.8.1Pyenv的部署与使用161.8.2Virtualenv的部署与使用181.9本章小结20第2章Ansible基础元素介绍212.1Ansible目录结构介绍212.2Ansible配置文件解析232.3Ansible命令用法详解252.4Ansible系列命令用法详解与使用场景介绍282.4.1ansible282.4.2ansible-galaxy292.4.3ansible-pull312.4.4ansible-doc312.4.5ansible-playbook312.4.6ansible-vault322.4.7ansible-console322.5Ansible Inventory配置及详解342.5.1定义主机和组342.5.2定义主机变量352.5.3定义组变量352.5.4定义组嵌套及组变量362.5.5多重变量定义362.5.6其他Inventory参数列表372.6Ansible与正则372.7本章小结39第3章Ansible Ad-Hoc命令集403.1Ad-Hoc使用场景403.2Ad-Hoc命令集介绍413.2.1Ad-Hoc命令集用法简介413.2.2通过Ad-Hoc查看系统设置463.2.3通过Ad-Hoc研究Ansible的并发特性473.2.4通过Ad-Hoc研究Ansible的模块使用493.3Ad-Hoc组管理和特定主机变更523.3.1Ad-Hoc组定义523.3.2Ad-Hoc配置管理:配置Proxy与Web Servers实践543.3.3Ad-Hoc配置后端:配置NoSQL与Database Servers实践563.3.4Ad-Hoc特定主机变更573.4Ad-Hoc用户与组管理583.4.1Linux用户管理583.4.2Windows用户管理633.4.3应用层用户管理643.5本章小结65第4章Playbook快速入门664.1Playbook语法简介664.1.1多行缩进674.1.2单行缩写674.2Playbook案例分析684.3Playbook与Shell脚本差异对比714.4Ansible-playbook实战小技巧714.4.1限定执行范围714.4.2用户与权限设置724.4.3Ansible-playbook:其他选项技巧734.5实战一:Ansible部署Node.js企业实践734.5.1添加第三方源734.5.2运行Node.js进程774.5.3Node.js app服务部署总结784.6实战二:Drupal基于LAMP的自动化部署784.6.1定义变量并设置Handlers794.6.2部署LAMP基础服务804.6.3配置Apache814.6.4配置PHP824.6.5配置MySQL834.6.6安装Drush和Composer844.6.7通过Git和Drush安装Drupal854.6.8Drupal部署过程总结864.7实战三:Ansible部署Tomcat企业实战864.7.1定义变量并设置Handlers864.7.2安装Java874.7.3安装Tomcat 8884.7.4安装Apache Solr894.8本章小结91第5章Ansible Playbook拓展925.1Handlers925.2环境变量935.3变量955.3.1Playbook 变量965.3.2在Inventory文件中定义变量975.3.3注册变量985.3.4使用高阶变量985.3.5主机变量和组变量1005.3.6Facts(收集系统信息)1015.3.7Ansible加密模块Vault1045.3.8变量优先级1065.4ifthenwhen流程控制1075.4.1Jinja2 正则表达、Python 内置函数和逻辑判断1075.4.2变量注册器register1085.4.3when条件判断1095.4.4changed_when、failed_when条件判断1105.4.5ignore_errors条件判断1115.5任务间流程控制1115.5.1任务委托1115.5.2任务暂停1125.6交互式提示1125.7Tags标签1135.8Block块1155.9本章小结116第二篇 高级进阶篇第6章Playbook高级技巧进阶1186.1巧用 Includes1186.1.1Includes使用场景1186.1.2Includes用法1196.1.3动态 Includes1236.1.4Handler Includes使用技巧1236.1.5Playbooks Includes使用技巧1246.2巧用Roles1246.2.1构建Roles1256.2.2使用Roles重构Playbooks1256.2.3Roles技巧之Handlers:动态变更1296.2.4Roles技巧之Files:文件传输1316.2.5Roles技巧之Templates:模板替换1336.2.6更多复杂的跨平台Roles1356.3Jinja2实现模板高度自定义1366.3.1Jinja2 For循环1366.3.2Jinja2 If条件1376.3.3Jinja多值合并1386.3.4Jinja default设定1406.3.5Ansible结合Jinja2生成Nginx配置1416.3.6Ansible结合Jinja2生成Apache多主机配置1466.3.7Jinja2动态变量配置及架构优化1486.4Ansible Galaxy1516.4.1Ansible-galaxy命令用法1516.4.2使用Galaxy1526.5本章小结154第7章Inventory文件扩展1557.1Inventory文件实战1557.2独立的Inventory文件1597.3Inventory变量1597.3.1host_vars目录1607.3.2group_vars目录1617.4动态Inventory1617.5本章小结168第8章Ansible插件扩展1698.1Ansible 插件使用场景1698.2Ansible插件类型1708.3如何编写自己的插件1718.4插件案例实践1728.5本章小结174第9章Ansible企业应用实战1759.1为新系统添加安全认证SSHKey1759.1.1Ansible密码认证1759.1.2ssh-copy-id1769.1.3Kickstart1779.1.4Python Paramiko1789.1.5Expect1799.2企业高可用架构的Ansible应用1809.2.1Playbook目录编排1819.2.2高可用架构基于Ansible的自动化实现1819.2.3使用Includes衔接各服务配置1889.3ELK日志系统基于Ansible的自动化实现1899.3.1ELK Server的自动化实现1909.3.2ELK Client的自动化实现1929.4实时日志系统基于Ansible的自动化实现1929.4.1配置概览1929.4.2架构部署1939.5Zabbix基于Ansible的自动化实现1959.5.1Zabbix Server基于Ansible的自动化实现1969.5.2Zabbix Agent基于Ansible的自动化实现1999.5.3Zabbix Proxy基于Ansible的自动化实现2019.6Ansible Git GitLab实现自动化发布2029.6.1架构概览2039.6.2架构部署2039.7Docker的Ansible自动化应用2069.7.1Docker容器入门2069.7.2使用Ansible创建和管理容器2079.7.3基于Ansible创建Flask的Docker容器2089.7.4数据存储容器配置2109.7.5Flask容器配置2119.7.6MySQL容器配置2139.7.7启动容器2159.8本章小结215第10章Ansible基于Windows的管理架构21710.1Ansible管理机部署安装21810.2Windows系统预配置21910.3Windows下可用模块22410.4Windows Ansible模块使用实战22410.5本章小结226第11章Ansible安全优化篇22711.1SSH与远程连接简介22711.1.1Telnet22811.1.2RLOGIN、RSH和RCP22811.1.3SSH22811.1.4SSH的发展和远程访问的未来22911.2通信加密23011.3禁止root远程登录23111.4操作系统简介23211.5遵守权限最小化原则23311.5.1用户管理23311.5.2文件权限管理23311.6定期维护更新23411.6.1手动更新23411.6.2自动定时更新23411.7善用Iptables防火墙23611.8定期磁盘巡检23811.9系统登录日志审记23811.10 正确使用SELinux和AppArmor23911.11 本章小结240第三篇 Web自动化开发篇第12章Ansible模块编写24212.1初步认识Ansible模块24212.2Ansible简单模块编写24312.3模块变量添加24512.4模块状态返回的标识及应用24612.5模块退出状态处理24912.6模块其他功能补充25012.7Ansible模块API的调用25112.8本章小结265第13章开发自己的Ansible WebUI26713.1搭建Django开发环境26713.1.1为什么要使用Web页面做管理26713.1.2系统及软件环境26813.2Django配置文件详解26913.2.1Django的基础配置及运行26913.2.2Django的主配置目录介绍27013.2.3Django的app目录介绍27113.3编写Ansible的Web接口27213.4前端基础知识介绍27813.4.1HTML和CSS简介27813.4.2JavaScript简介27913.5Ansible WebUI界面开发28013.5.1对接前端页面与Ansible的Web接口28013.5.2配置Web页面传参28213.6本章小结285第14章Web与Ansible结合的常用实例28614.1Web方式管理Ansible的Inventory28614.1.1重新定制Ansible的Hosts文件规则28614.1.2使用ConfigParser解析并生成Ansible Hosts文件28714.1.3使用数据库的存储数据生成的Ansible Hosts文件29014.1.4通过页面来生成Hosts文件29314.2使用celery后台执行任务30114.2.1为什么要使用celery30114.2.2使用celery的前期准备30114.2.3使用celery开始任务30314.2.4使用celery取消正在进行的任务30514.3运行YML文件并实时读取日志30614.4通过页面上传文件并基于Ansible分发31314.5在页面上构建YML文件注册中心31614.6操作者注册中心界面32414.7本章小结331
|
內容試閱:
|
前言?Preface为什么要写这本书首次接触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.comqa,我们会尽量提供最满意的解答。期待能够得到你们的真挚反馈,在技术之路上互勉共进。我想和作者聊聊微信公众号:linux178或扫以下二维码QA公共平台:http:www.178linux.comqa普通用户请加群:Ansible中文权威-2号群 486022616书籍读者请加群:中文权威读者群577479881致谢感谢翻译团队在Ansible官网文档翻译过程中的无私付出。感谢魏巍、甘捷两位笔友在我狂轰滥炸的淫威下坚持写作,并持续输出高质量的内容。感谢机械工业出版社华章公司的策划编辑高婧雅,在近一年的时间中始终支持我的写作。你们的鼓励和帮助引导我们顺利完成全部书稿。特别致谢最后,我要特别感谢我的太太yolanda,为写作这本书,我牺牲了很多陪伴她的时间,但也正因为有了她的付出与支持,我才能坚持写下去。同时,也要郑重感谢马哥教育在我写作的过程中提供不遗余力的资源支持,让我们得以放开手脚无所束缚地完成写作工作。谨以此书献给我最亲爱的家人,以及众多热爱开源技术的朋友们!李松涛(stanley)2016年8月
|
|