
编辑推荐
在当下百家争鸣的配置管理工具领域中,Ansible有着独特的优势:原生即轻量。你不需要在要管理的机器上安装任何软件,并且它的学习曲线非常平缓。在第2版中,不管你是要将代码部署到生产环境的开发者还是寻求更好的自动化解决方案的系统管理员,这本使用指南都将帮助你快速地在生产环境中使用这个工具。
作者Lorin Hochstein和René Moser示范了如何编写playbook(Ansible中的配置管理脚本),如何管理远程服务器。除此之外,他们还会带领你探索这个工具的潜在法宝:内置模块。通过阅读本书,你会发现,Ansible拥有你所需要的功能的同时,还简单得超出你的想象。
■ 理解Ansible区别于其他配置管理系统的特点
■ 使用YAML语法编写你自己的playbook
■ 部署一个复杂应用的完整范例
■ 管理Windows服务器和自动化配置网络设备
■ 将应用部署到 EC2或其他云平台
■ 使用Ansible创建Docker镜像并部署Docker容器
尽量从头开始阅读本书,后面的章节会建立在前面章节的基础之上。因为它是以教程风格编写的,所以你可以在自己的机器上跟随讲解一步步操作。并且,大多数实例都与Web应用程序相关,对于生产环境非常有借鉴意义。
名人推荐
大规模集群的配置管理工具一直都是提升效率的利器。新浪在 2003年前后开始使用 CFengine;在 2010年前后,为了解决 CFengine的一些问题,逐渐在一些业务中用 SSH进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经以 SSH为主了。本书的译者在新浪负责很多配置管理系统的开发,以我们的经验来看,基于 SSH进行配置管理有很多好处,这也是我对 Ansible很感兴趣的地方。充分利用系统现成的机制,不仅省去了 Agent的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible还有很多吸引人的地方,非常值得你去学习和发现。
——童剑新浪研发中心总经理
Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。 DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便, Ansible正在被越来越多的大公司采用,包括独立使用以及与其他工具(如 Puppet)结合使用。本书通过大量简单易用的实例帮助读者快速上手,通读全书会让你对 Ansible有一个全面的了解,动手操作书中的实例,可快速掌握 Ansible,剩下的就交给你的灵感吧。
——刘宇 @守住每一天,金山西山居架构师《Puppet实战》作者,《Puppet实战手册》译者之一
对于 DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible帮我们实现了运维人员向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。本书秉承了 Ansible这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
——程辉 UnitedStack公司创始人兼 CEO
我在几个小时内就疯狂地“啃”完了第 1版《奔跑吧 Ansible》的手稿: Lorin妙笔生花,对 Ansible的讲解如行云流水。听到他与 René合写第 2版的时候我感到非常兴奋。在第 2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容是他们没有讨论到的。
—Jan-Piet Mens,咨询顾问
Ansible的万用指南。本书不仅适用于入门,也适用于了解如何使用高级功能提升你的 Ansible技能。
——Matt Jaynes,High Velocity Ops工程师
Ansible的美妙在于,你可以从实践入手,而它又易于快速实现原型,很快就能迭代起来,并且能不断解决问题。这当然很棒。然而,随着时间的推移,这种方式会导致知识和理解上的偏差,而且很难去调和。《奔跑吧 Ansible》(第 2版)恰恰可以解决这个问题。因为它从 Ansible的基础知识一直讲解到使用 YAML和 Jinja2的复杂性。而且本书还包含许多现成的案例可供学习和测试,可以帮助读者深入了解自动化构建与部署生产环境。在过去几年的培训课程和实践工作中,我总是向同事和客户推荐这本书。
——Dag Wieers,自由职业 Linux系统工程师, Ansible长期贡献者和咨询顾问
本书既为大家提供了简单功能的讲解,同时也深入探讨了 Ansible的配置管理方法。本书还包含很多提示和指引,并覆盖了各种形式的案例,例如 AWS、Windows和 Docker。
——Ingo Jochim, itelligence GMS/CIS Cloud Implementation经理
Lorin和 René字字珠玑,妙合无痕。他们手把手带领读者完成创建和管理 Ansible项目的所有重要步骤。本书不单单是一本 Ansible的参考书,它还涵盖了官方文档中缺少的几个重要概念和主题。它是 Ansible初学者的优秀学习资源,同时也包含许多对 Ansible中高级使用者很有帮助的概念与技巧。
——Dominique Barton, confirm IT solutions DevOps工程师
不管你是一名新手,还是一名已经在使用 Ansible并且希望继续取得进步的老程序员,本书都精辟地涵盖了你所需要了解的内容。它与同类书籍很大的区别在于,它采用了真实的例子,并解释了如何实现以及为什么会这样,这一大特点将帮助你更加深入地理解 Ansible。
——Paul Angus, ShapeBlue技术 VP
我在几个小时内就疯狂地“啃”完了第1版《奔跑吧Ansible》的手稿:Lorin对Ansible的讲解如行云流水,妙笔生花。听到他与René协作第2版的时候我感到非常兴奋。在第2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容他们没有讨论到的。
——Jan-Piet Mens 咨询顾问
媒体推荐
大规模集群的配置管理工具一直都是提升效率的利器。新浪在 2003年前后开始使用 CFengine;在 2010年前后,为了解决 CFengine的一些问题,逐渐在一些业务中用 SSH进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经以 SSH为主了。本书的译者在新浪负责很多配置管理系统的开发,以我们的经验来看,基于 SSH进行配置管理有很多好处,这也是我对 Ansible很感兴趣的地方。充分利用系统现成的机制,不仅省去了 Agent的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible还有很多吸引人的地方,非常值得你去学习和发现。
——童剑新浪研发中心总经理
Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。 DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便, Ansible正在被越来越多的大公司采用,包括独立使用以及与其他工具(如 Puppet)结合使用。本书通过大量简单易用的实例帮助读者快速上手,通读全书会让你对 Ansible有一个全面的了解,动手操作书中的实例,可快速掌握 Ansible,剩下的就交给你的灵感吧。
——刘宇 @守住每一天,金山西山居架构师《Puppet实战》作者,《Puppet实战手册》译者之一
对于 DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible帮我们实现了运维人员向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。本书秉承了 Ansible这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
——程辉 UnitedStack公司创始人兼 CEO
我在几个小时内就疯狂地“啃”完了第 1版《奔跑吧 Ansible》的手稿: Lorin妙笔生花,对 Ansible的讲解如行云流水。听到他与 René合写第 2版的时候我感到非常兴奋。在第 2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容是他们没有讨论到的。
—Jan-Piet Mens,咨询顾问
Ansible的万用指南。本书不仅适用于入门,也适用于了解如何使用高级功能提升你的 Ansible技能。
——Matt Jaynes,High Velocity Ops首席工程师
Ansible的美妙在于,你可以从实践入手,而它又易于快速实现原型,很快就能迭代起来,并且能不断解决问题。这当然很棒。然而,随着时间的推移,这种方式会导致知识和理解上的偏差,而且很难去调和。《奔跑吧 Ansible》(第 2版)恰恰可以解决这个问题。因为它从 Ansible的基础知识一直讲解到使用 YAML和 Jinja2的复杂性。而且本书还包含许多现成的案例可供学习和测试,可以帮助读者深入了解自动化构建与部署生产环境。在过去几年的培训课程和实践工作中,我总是向同事和客户推荐这本书。
——Dag Wieers,自由职业 Linux系统工程师, Ansible长期贡献者和咨询顾问
本书既为大家提供了简单功能的讲解,同时也深入探讨了 Ansible的配置管理方法。本书还包含很多提示和指引,并覆盖了各种形式的案例,例如 AWS、Windows和 Docker。
——Ingo Jochim, itelligence GMS/CIS Cloud Implementation经理
Lorin和 René字字珠玑,妙合无痕。他们手把手带领读者完成创建和管理 Ansible项目的所有重要步骤。本书不单单是一本 Ansible的参考书,它还涵盖了官方文档中缺少的几个重要概念和主题。它是 Ansible初学者的优秀学习资源,同时也包含许多对 Ansible中高级使用者很有帮助的概念与技巧。
——Dominique Barton, confirm IT solutions DevOps工程师
不管你是一名新手,还是一名已经在使用 Ansible并且希望继续取得进步的老程序员,本书都精辟地涵盖了你所需要了解的内容。它与同类书籍最大的区别在于,它采用了真实的例子,并解释了如何实现以及为什么会这样,这一大特点将帮助你更加深入地理解 Ansible。
——Paul Angus, ShapeBlue技术 VP
我在几个小时内就疯狂地“啃”完了第1版《奔跑吧Ansible》的手稿:Lorin对Ansible的讲解如行云流水,妙笔生花。听到他与René合作第2版的时候我感到非常兴奋。在第2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容他们没有讨论到的。
——Jan-Piet Mens 咨询顾问
作者简介
Lorin Hochstein Lorin Hochestin是Netflix的Chaos工程团队的高级软件工程师。他曾在SendGrid实验室担任高级软件工程师,在那之前曾在Nimbis Services担任云服务架构师,还曾经是加州大学信息科学院的计算机科学家。从小在魁北克蒙特利尔长大,除了偶尔会说“闭上灯”这种话之外,从他的口音中你绝对猜不出他是加拿大人。他正在回归学术界:他已经在内布拉斯加大学林肯分校作为教授计算机科学与应用的副教授两年。此外,他还曾作为计算机科学家在南加州大学信息科学院工作过四年。他在麦吉尔大学取得了计算机工程学学士学位,在波士顿大学取得了电子工程学硕士学位,并在马里兰大学帕克分校取得了计算机科学的博士学位。他现在在Netflix 的Chaos 工程团队任高级软件工程师。
René Moser 是一位瑞士籍系统工程师,ASF CloudStack的代码贡献者,Ansible中与CloudStack集成相关部分的作者,并从2016年起一直是Ansible社区的核心成员。与妻子和三个孩子定居在瑞士。他获得了IT 专业的高等教育文凭。在IT 领域,他喜欢以简单的方式实现需求并不断扩展。他沉浸于开源社区已超过15 年,他是Ansible 核心贡献者和40 多个Ansible 模块的作者,他还是Apache CloudStack 项目管理委员会成员及代码贡献者。他目前在SWISS TXT 任职系统工程师。
译者简介
主译人员曾于新浪任职技术总监,负责私有云平台研发与运维并支撑新浪微博从零至上市高速发展的过程。后于华为任职技术专家,致力于提升华为公有云运维能力。2016年加入贝壳找房前身链家网,并一直致力于打造基于ansible的自动化平台。
目录
序. .................................... xxiii
第 2版前言. .......................... xxv
第 1版前言. ........................ xxvii
第 1章 简介........................... 1
关于版本的说明 .................... 2
Ansible的优势 ...................... 2
Ansible如何运作 .................. 3
Ansible的精妙设计赏析 ....... 4
易读的语法.................... 4
远程主机无须安装依赖 . 5
基于推送模式 ................ 5
使用 Ansible管理小规模环境 ................................... 6
内置模块 ....................... 6
非常轻量的抽象层 ........ 7
Ansible太过于简单了吗 ....... 8
需要哪些基础知识 ................ 8
哪些内容不会涉及 ................ 9
安装 Ansible ....................... 10
建立一台用于测试的服务器 ........................................... 11
使用 Vagrant来创建测试服务器 ............................. 11
将测试服务器的信息配置在 Ansible中 .................. 14
使用 ansible.cfg文件来简化配置 ............................ 16
展望 .................................... 19
第 2章 playbook:一切的开始. 20
一些准备工作 ..................... 20
一个简单的 playbook .......... 21
定义 Nginx的配置文件 ........................................... 23
创建一个定制的首页 ... 24
创建一个 webservers群组 ....................................... 25
运行这个 playbook .............. 25
YAML格式的 playbook ...... 27
文件起始 ..................... 27
注释 ............................. 27
字符串 ......................... 27
布尔型 ......................... 28
列表 ............................. 28
字典 ............................. 28
分行 ............................. 29
剖析 playbook ..................... 30
play.............................. 31
task .............................. 32
模块 ............................. 33
将它们整合在一起 ...... 34
执行 Ansible后发生变化了吗?跟踪主机状态 .............. 35
来点更酷炫的:添加 TLS支持 ...................................... 35
生成 TLS证书 ............. 36
变量 ............................. 37
生成 Nginx配置模板 .. 39
handler ......................... 41
运行 playbook.............. 42
第 3章 使用 inventory描述你的服务器................................... 44
inventory文件..................... 44
准备工作:创建多台 Vagrant虚拟机 ............................. 45
inventory 行为参数 ............. 48
ansible_connection ...... 49
ansible_shell_type ....... 49
ansible_python_interpreter ....................................... 49
ansible_*_interpreter ... 49
改变行为参数的默认值 ........................................... 50
群组 .................................... 50
范例:部署一个 Django应用.................................. 51
别名和端口.................. 54
群组的群组.................. 54
为主机编号(宠物还是公牛 ) ................................. 55
在 inventory内部的主机和组变量 .................................. 55
在各自文件中的主机和组变量 ....................................... 57
动态 inventory..................... 59
动态 inventory脚本接口 ......................................... 60
编写动态 inventory脚本 ......................................... 61
预装 inventory脚本 ..... 65
将 inventory分割到多个文件 ......................................... 65
使用 add_host和 group_by在运行时添加条目 ............... 65
add_host ...................... 65
group_by ..................... 67
第 4章 变量与 fact................ 69
在 playbook中定义变量 ..... 69
检查变量的值 ..................... 70
registering 变量 ................... 70
fact ...................................... 74
查看与某台服务器关联的所有 fact ......................... 75
查看 fact子集 .............. 75
任何模块都可以返回 fact ........................................ 77
本地 fact ...................... 77
使用 set_fact定义新变量 .... 79
内置变量 ............................. 79
hostvars ....................... 80
inventory_hostname ..... 80
groups .......................... 81
在命令行设置变量 .............. 81
优先级 ................................. 82
第 5章 引入测试应用:Mezzanine. ....................................... 84
为什么向生产环境部署软件是一件复杂的事 ................. 84
PostgreSQL:数据库 ... 88
Gunicorn:应用服务器 ........................................... 88
Nginx:Web服务器 .... 89
Supervisor:进程管理器 ......................................... 90
第 6章 使用 Ansible部署 Mezzanine....................................91
列出 playbook中的 task...... 91
组织要部署的文件 .............. 92
变量和秘密变量 .................. 93
使用迭代(with_items)安装多个软件包 ...................... 95
向任务中添加 Become语句 96
更新 apt缓存 ...................... 97
使用 Git获取项目源码 ....... 98
将 Mezzanine和其他软件包安装到 virtualenv中 ......... 100
任务中的复杂参数:稍微跑个题 ............
序言
本书赢得的赞誉
大规模集群的配置管理工具一直都是提升效率的利器。新浪在 2003年前后开始使用 CFengine;在 2010年前后,为了解决 CFengine的一些问题,逐渐在一些业务中用 SSH进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经以 SSH为主了。本书的译者在新浪负责很多配置管理系统的开发,以我们的经验来看,基于 SSH进行配置管理有很多好处,这也是我对 Ansible很感兴趣的地方。充分利用系统现成的机制,不仅省去了 Agent的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible还有很多吸引人的地方,非常值得你去学习和发现。
——童剑新浪研发中心总经理
Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。 DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便, Ansible正在被越来越多的大公司采用,包括独立使用以及与其他工具(如 Puppet)结合使用。
本书通过大量简单易用的实例帮助读者快速上手,通读全书会让你对 Ansible有一个全面的了解,动手操作书中的实例,可快速掌握 Ansible,剩下的就交给你的灵感吧。
——刘宇 @守住每一天,金山西山居架构师《Puppet实战》作者,《Puppet实战手册》译者之一
对于 DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible帮我们实现了运维人员向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。本书秉承了 Ansible这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
——程辉 UnitedStack公司创始人兼 CEO
我在几个小时内就疯狂地“啃”完了第 1版《奔跑吧 Ansible》的手稿: Lorin妙笔生花,对 Ansible的讲解如行云流水。听到他与 René合写第 2版的时候我感到非常兴奋。在第 2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容是他们没有讨论到的。
—Jan-Piet Mens,咨询顾问
Ansible的万用指南。本书不仅适用于入门,也适用于了解如何使用高级功能提升你的 Ansible技能。 —Matt Jaynes,High Velocity Ops首席工程师
Ansible的美妙在于,你可以从实践入手,而它又易于快速实现原型,很快就能迭代起来,并且能不断解决问题。这当然很棒。然而,随着时间的推移,这种方式会导致知识和理解上的偏差,而且很难去调和。
《奔跑吧 Ansible》(第 2版)恰恰可以解决这个问题。因为它从 Ansible的基础知识一直
讲解到使用 YAML和 Jinja2的复杂性。而且本书还包含许多现成的案例可供学习和测试,
可以帮助读者深入了解自动化构建与部署生产环境。
在过去几年的培训课程和实践工作中,我总是向同事和客户推荐这本书。
—Dag Wieers,自由职业 Linux系统工程师, Ansible长期贡献者和咨询顾问
本书既为大家提供了简单功能的讲解,同时也深入探讨了 Ansible的配置管理方法。本书还包含很多提示和指引,并覆盖了各种形式的案例,例如 AWS、Windows和 Docker。
—Ingo Jochim, itelligence GMS/CIS Cloud Implementation经理
Lorin和 René字字珠玑,妙合无痕。他们手把手带领读者完成创建和管理 Ansible项目的所有重要步骤。本书不单单是一本 Ansible的参考书,它还涵盖了官方文档中缺少的几个重要概念和主题。它是 Ansible初学者的优秀学习资源,同时也包含许多对 Ansible中高级使用者很有帮助的概念与技巧。
—Dominique Barton, confirm IT solutions DevOps工程师
不管你是一名新手,还是一名已经在使用 Ansible并且希望继续取得进步的老程序员,本书都精辟地涵盖了你所需要了解的内容。它与同类书籍最大的区别在于,它采用了真实的例子,并解释了如何实现以及为什么会这样,这一大特点将帮助你更加深入地理解 Ansible。
—Paul Angus, ShapeBlue技术 VP
第2版译者序
距离上一版《奔跑吧 Ansible》中文版问世已经两年有余,非常荣幸还能主导本次第 2版的翻译工作。自第 1版出版后,不管是大规模服务器配置管理、Ansible社区,还是我的工作,都有了很多变化。
我从专注于运维能力提升的专家岗位上离职,转而回归基础设施研发与运维团队的技术管理工作。在新的岗位上,我有三个深切的感触:第一,自动化配置管理领域的触角已经深入网络设备领域;第二,在数据中心与 IT基础设施中,仍然有部分领域难以避免地使用 Windows操作系统;第三,容器化接过云计算的接力棒,正在席卷整个行业。也许是作者也和我有类似的感受,第 2版《奔跑吧 Ansible》如期而至,添加了 Windows管理和网络设备管理的相关章节。同时,还重写了 Docker一章。
除了行业的变化外,Ansible的大版本也来到了 2.x。在这个大版本中,Ansible带来了不少改变与新特性。使用 Ansible新版本的同时,继续使用第 1版的《奔跑吧 Ansible》作为工具书显然会让读者产生很多困惑,第 2版的出版恰好可以解决这个问题。
在第 2版的翻译中,我尝试让我所管理的 SRE团队都参与到本书的翻译工作中,感谢各位同事的辛勤劳动。参与翻译的人员如下:杨振振(第 1章和第 15章)、刘德鑫(第 2至 4章)、高雪(第 5至 7章)、张冠男(第 8至 9章和第 19章)、刘阳龙(第 11至 12章和第 18章)、李震(第 10章、第 16至 17章)以及刘志远(第 13至 14章)。
第1版译者序
由于诸多原因,早在童年时代计算机就进入了我的生活。对计算机的迷恋最终将我带进了计算机工程领域。而让我真正从玩耍转向工程化地对待计算机的分水岭是,对系统管理领域的接触。好吧,不管多么不乐意,这类工作在那个年代就是被称作网管。从我刚开始入门系统管理的时候,我就一直有一个疑问:如果一家公司足够大,有上百台计算机,该怎么管理呢?总不能一台台远程桌面连上去吧?嗯,没错,那个时候我使用的还是 Windows,而上百台计算机对于当时的我来说已经是一个很夸张的数字了。2007年我加入新浪平台架构部,这里的工作为我真正打开了新世界的大门。那个时候,部门正在使用 CFEngine管理上百台机器、为不同功能的服务器划分角色、为相同功能的服务器进行编号(像为公牛编号那样)、为配置文件编写模板来减少硬编码,所有这一切都用一种工程实践的方法解决了我之前的所有疑问。后来,我才知道这个实践性很强的方法的名字——配置管理。转眼之间,我已经在新浪工作了七年之久。这七年间,我的职位与工作内容有多次变化,但所围绕的工作核心从未改变:如何让数千台服务器按照我们想要的方式运转。为了更好地达到这一目的,我尝试过各种配置管理的方式:从 CFEngine到 Puppet、SaltStack,甚至是自行开发配置管理工具。但是每一种方式都与我理想中那个遵循“ KISS原则”、易于学习,且在功能上具有无穷扩展空间的配置管理工具相差甚远——直到经同事文旭的推荐,我认识了 Ansible。Ansible的轻量、最小化抽象层及轻松扩展与收缩一下子就吸引了我。到目前为止,它是与我理想中的配置管理工具最接近的一个。这样优秀的工具我当然不会自己独享。我曾经在各种场合向正在寻找合适配置管理工具的朋友与同事推荐 Ansible。我发现有一部分朋友虽然给予了 Ansible正面的评价,却对缺少中文文档感觉略有不便。这让我意识到语言仍旧是部分技术人员学习的障碍之一。显然,我并不具备帮助技术人员提升英语阅读水平的能力,但至少我可以将这本《奔跑吧 Ansible》的中文版带给大家,希望本书可以帮助一些读者快速上手 Ansible。
由于水平所限,本书中难免出现一些翻译错误,诚恳地欢迎大家向我或者出版社反馈本书中的各种错误。
最后,我想要感谢赵新宇、陈明杰和刘宇等朋友,他们在我翻译本书的过程中为我提供了无私的帮助和支持。还要感谢我的夫人张若金的支持与理解。没有你们就不会有本书的出版。
序
2012年 2月 Ansible创立的时候,它还是一个非常简单的项目,随后它的快速发展令我们十分惊喜。现在,它已经是上千人参与开发的产品了(如果包括参与贡献想法的人还会更多),并且几乎在每个国家都有人在使用。在各种技术会议中也总是能找到一些人在使用它,这在计算机领域是一件很不寻常的事。
Ansible的不平凡源自于它的平凡。Ansible并不企图做盘古开天地般的创新,而是从那些聪明的家伙已经提出的想法中提炼出精华,并将这些想法尽可能地落地。
Ansible旨在探求某些学术上的 IT 自动化方法(它们本身就是对大型繁杂的商业套件的一种反映)与简单粗暴解决问题的脚本之间的平衡点。另外,我们如何能将配置管理系统、部署发布系统、编排系统(orchestration project)以及千奇百怪但是非常重要的 shell脚本库用一个单一系统替换呢?这恰恰是 Ansible 要实现的。
我们可以从 IT自动化技术栈中移除主要架构组件吗?去掉管理性守护进程,转而依赖于 OpenSSH,意味着系统转眼间就可以开始管理一台新的计算机,而不需要在被管理的机器上安装任何东西。更深一层来说,系统更趋于可靠和安全。
我注意到,尝试使用自动化
在当下百家争鸣的配置管理工具领域中,Ansible有着独特的优势:原生即轻量。你不需要在要管理的机器上安装任何软件,并且它的学习曲线非常平缓。在第2版中,不管你是要将代码部署到生产环境的开发者还是寻求更好的自动化解决方案的系统管理员,这本使用指南都将帮助你快速地在生产环境中使用这个工具。
作者Lorin Hochstein和René Moser示范了如何编写playbook(Ansible中的配置管理脚本),如何管理远程服务器。除此之外,他们还会带领你探索这个工具的潜在法宝:内置模块。通过阅读本书,你会发现,Ansible拥有你所需要的功能的同时,还简单得超出你的想象。
■ 理解Ansible区别于其他配置管理系统的特点
■ 使用YAML语法编写你自己的playbook
■ 部署一个复杂应用的完整范例
■ 管理Windows服务器和自动化配置网络设备
■ 将应用部署到 EC2或其他云平台
■ 使用Ansible创建Docker镜像并部署Docker容器
尽量从头开始阅读本书,后面的章节会建立在前面章节的基础之上。因为它是以教程风格编写的,所以你可以在自己的机器上跟随讲解一步步操作。并且,大多数实例都与Web应用程序相关,对于生产环境非常有借鉴意义。
名人推荐
大规模集群的配置管理工具一直都是提升效率的利器。新浪在 2003年前后开始使用 CFengine;在 2010年前后,为了解决 CFengine的一些问题,逐渐在一些业务中用 SSH进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经以 SSH为主了。本书的译者在新浪负责很多配置管理系统的开发,以我们的经验来看,基于 SSH进行配置管理有很多好处,这也是我对 Ansible很感兴趣的地方。充分利用系统现成的机制,不仅省去了 Agent的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible还有很多吸引人的地方,非常值得你去学习和发现。
——童剑新浪研发中心总经理
Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。 DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便, Ansible正在被越来越多的大公司采用,包括独立使用以及与其他工具(如 Puppet)结合使用。本书通过大量简单易用的实例帮助读者快速上手,通读全书会让你对 Ansible有一个全面的了解,动手操作书中的实例,可快速掌握 Ansible,剩下的就交给你的灵感吧。
——刘宇 @守住每一天,金山西山居架构师《Puppet实战》作者,《Puppet实战手册》译者之一
对于 DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible帮我们实现了运维人员向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。本书秉承了 Ansible这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
——程辉 UnitedStack公司创始人兼 CEO
我在几个小时内就疯狂地“啃”完了第 1版《奔跑吧 Ansible》的手稿: Lorin妙笔生花,对 Ansible的讲解如行云流水。听到他与 René合写第 2版的时候我感到非常兴奋。在第 2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容是他们没有讨论到的。
—Jan-Piet Mens,咨询顾问
Ansible的万用指南。本书不仅适用于入门,也适用于了解如何使用高级功能提升你的 Ansible技能。
——Matt Jaynes,High Velocity Ops工程师
Ansible的美妙在于,你可以从实践入手,而它又易于快速实现原型,很快就能迭代起来,并且能不断解决问题。这当然很棒。然而,随着时间的推移,这种方式会导致知识和理解上的偏差,而且很难去调和。《奔跑吧 Ansible》(第 2版)恰恰可以解决这个问题。因为它从 Ansible的基础知识一直讲解到使用 YAML和 Jinja2的复杂性。而且本书还包含许多现成的案例可供学习和测试,可以帮助读者深入了解自动化构建与部署生产环境。在过去几年的培训课程和实践工作中,我总是向同事和客户推荐这本书。
——Dag Wieers,自由职业 Linux系统工程师, Ansible长期贡献者和咨询顾问
本书既为大家提供了简单功能的讲解,同时也深入探讨了 Ansible的配置管理方法。本书还包含很多提示和指引,并覆盖了各种形式的案例,例如 AWS、Windows和 Docker。
——Ingo Jochim, itelligence GMS/CIS Cloud Implementation经理
Lorin和 René字字珠玑,妙合无痕。他们手把手带领读者完成创建和管理 Ansible项目的所有重要步骤。本书不单单是一本 Ansible的参考书,它还涵盖了官方文档中缺少的几个重要概念和主题。它是 Ansible初学者的优秀学习资源,同时也包含许多对 Ansible中高级使用者很有帮助的概念与技巧。
——Dominique Barton, confirm IT solutions DevOps工程师
不管你是一名新手,还是一名已经在使用 Ansible并且希望继续取得进步的老程序员,本书都精辟地涵盖了你所需要了解的内容。它与同类书籍很大的区别在于,它采用了真实的例子,并解释了如何实现以及为什么会这样,这一大特点将帮助你更加深入地理解 Ansible。
——Paul Angus, ShapeBlue技术 VP
我在几个小时内就疯狂地“啃”完了第1版《奔跑吧Ansible》的手稿:Lorin对Ansible的讲解如行云流水,妙笔生花。听到他与René协作第2版的时候我感到非常兴奋。在第2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容他们没有讨论到的。
——Jan-Piet Mens 咨询顾问
媒体推荐
大规模集群的配置管理工具一直都是提升效率的利器。新浪在 2003年前后开始使用 CFengine;在 2010年前后,为了解决 CFengine的一些问题,逐渐在一些业务中用 SSH进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经以 SSH为主了。本书的译者在新浪负责很多配置管理系统的开发,以我们的经验来看,基于 SSH进行配置管理有很多好处,这也是我对 Ansible很感兴趣的地方。充分利用系统现成的机制,不仅省去了 Agent的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible还有很多吸引人的地方,非常值得你去学习和发现。
——童剑新浪研发中心总经理
Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。 DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便, Ansible正在被越来越多的大公司采用,包括独立使用以及与其他工具(如 Puppet)结合使用。本书通过大量简单易用的实例帮助读者快速上手,通读全书会让你对 Ansible有一个全面的了解,动手操作书中的实例,可快速掌握 Ansible,剩下的就交给你的灵感吧。
——刘宇 @守住每一天,金山西山居架构师《Puppet实战》作者,《Puppet实战手册》译者之一
对于 DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible帮我们实现了运维人员向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。本书秉承了 Ansible这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
——程辉 UnitedStack公司创始人兼 CEO
我在几个小时内就疯狂地“啃”完了第 1版《奔跑吧 Ansible》的手稿: Lorin妙笔生花,对 Ansible的讲解如行云流水。听到他与 René合写第 2版的时候我感到非常兴奋。在第 2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容是他们没有讨论到的。
—Jan-Piet Mens,咨询顾问
Ansible的万用指南。本书不仅适用于入门,也适用于了解如何使用高级功能提升你的 Ansible技能。
——Matt Jaynes,High Velocity Ops首席工程师
Ansible的美妙在于,你可以从实践入手,而它又易于快速实现原型,很快就能迭代起来,并且能不断解决问题。这当然很棒。然而,随着时间的推移,这种方式会导致知识和理解上的偏差,而且很难去调和。《奔跑吧 Ansible》(第 2版)恰恰可以解决这个问题。因为它从 Ansible的基础知识一直讲解到使用 YAML和 Jinja2的复杂性。而且本书还包含许多现成的案例可供学习和测试,可以帮助读者深入了解自动化构建与部署生产环境。在过去几年的培训课程和实践工作中,我总是向同事和客户推荐这本书。
——Dag Wieers,自由职业 Linux系统工程师, Ansible长期贡献者和咨询顾问
本书既为大家提供了简单功能的讲解,同时也深入探讨了 Ansible的配置管理方法。本书还包含很多提示和指引,并覆盖了各种形式的案例,例如 AWS、Windows和 Docker。
——Ingo Jochim, itelligence GMS/CIS Cloud Implementation经理
Lorin和 René字字珠玑,妙合无痕。他们手把手带领读者完成创建和管理 Ansible项目的所有重要步骤。本书不单单是一本 Ansible的参考书,它还涵盖了官方文档中缺少的几个重要概念和主题。它是 Ansible初学者的优秀学习资源,同时也包含许多对 Ansible中高级使用者很有帮助的概念与技巧。
——Dominique Barton, confirm IT solutions DevOps工程师
不管你是一名新手,还是一名已经在使用 Ansible并且希望继续取得进步的老程序员,本书都精辟地涵盖了你所需要了解的内容。它与同类书籍最大的区别在于,它采用了真实的例子,并解释了如何实现以及为什么会这样,这一大特点将帮助你更加深入地理解 Ansible。
——Paul Angus, ShapeBlue技术 VP
我在几个小时内就疯狂地“啃”完了第1版《奔跑吧Ansible》的手稿:Lorin对Ansible的讲解如行云流水,妙笔生花。听到他与René合作第2版的时候我感到非常兴奋。在第2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容他们没有讨论到的。
——Jan-Piet Mens 咨询顾问
作者简介
Lorin Hochstein Lorin Hochestin是Netflix的Chaos工程团队的高级软件工程师。他曾在SendGrid实验室担任高级软件工程师,在那之前曾在Nimbis Services担任云服务架构师,还曾经是加州大学信息科学院的计算机科学家。从小在魁北克蒙特利尔长大,除了偶尔会说“闭上灯”这种话之外,从他的口音中你绝对猜不出他是加拿大人。他正在回归学术界:他已经在内布拉斯加大学林肯分校作为教授计算机科学与应用的副教授两年。此外,他还曾作为计算机科学家在南加州大学信息科学院工作过四年。他在麦吉尔大学取得了计算机工程学学士学位,在波士顿大学取得了电子工程学硕士学位,并在马里兰大学帕克分校取得了计算机科学的博士学位。他现在在Netflix 的Chaos 工程团队任高级软件工程师。
René Moser 是一位瑞士籍系统工程师,ASF CloudStack的代码贡献者,Ansible中与CloudStack集成相关部分的作者,并从2016年起一直是Ansible社区的核心成员。与妻子和三个孩子定居在瑞士。他获得了IT 专业的高等教育文凭。在IT 领域,他喜欢以简单的方式实现需求并不断扩展。他沉浸于开源社区已超过15 年,他是Ansible 核心贡献者和40 多个Ansible 模块的作者,他还是Apache CloudStack 项目管理委员会成员及代码贡献者。他目前在SWISS TXT 任职系统工程师。
译者简介
主译人员曾于新浪任职技术总监,负责私有云平台研发与运维并支撑新浪微博从零至上市高速发展的过程。后于华为任职技术专家,致力于提升华为公有云运维能力。2016年加入贝壳找房前身链家网,并一直致力于打造基于ansible的自动化平台。
目录
序. .................................... xxiii
第 2版前言. .......................... xxv
第 1版前言. ........................ xxvii
第 1章 简介........................... 1
关于版本的说明 .................... 2
Ansible的优势 ...................... 2
Ansible如何运作 .................. 3
Ansible的精妙设计赏析 ....... 4
易读的语法.................... 4
远程主机无须安装依赖 . 5
基于推送模式 ................ 5
使用 Ansible管理小规模环境 ................................... 6
内置模块 ....................... 6
非常轻量的抽象层 ........ 7
Ansible太过于简单了吗 ....... 8
需要哪些基础知识 ................ 8
哪些内容不会涉及 ................ 9
安装 Ansible ....................... 10
建立一台用于测试的服务器 ........................................... 11
使用 Vagrant来创建测试服务器 ............................. 11
将测试服务器的信息配置在 Ansible中 .................. 14
使用 ansible.cfg文件来简化配置 ............................ 16
展望 .................................... 19
第 2章 playbook:一切的开始. 20
一些准备工作 ..................... 20
一个简单的 playbook .......... 21
定义 Nginx的配置文件 ........................................... 23
创建一个定制的首页 ... 24
创建一个 webservers群组 ....................................... 25
运行这个 playbook .............. 25
YAML格式的 playbook ...... 27
文件起始 ..................... 27
注释 ............................. 27
字符串 ......................... 27
布尔型 ......................... 28
列表 ............................. 28
字典 ............................. 28
分行 ............................. 29
剖析 playbook ..................... 30
play.............................. 31
task .............................. 32
模块 ............................. 33
将它们整合在一起 ...... 34
执行 Ansible后发生变化了吗?跟踪主机状态 .............. 35
来点更酷炫的:添加 TLS支持 ...................................... 35
生成 TLS证书 ............. 36
变量 ............................. 37
生成 Nginx配置模板 .. 39
handler ......................... 41
运行 playbook.............. 42
第 3章 使用 inventory描述你的服务器................................... 44
inventory文件..................... 44
准备工作:创建多台 Vagrant虚拟机 ............................. 45
inventory 行为参数 ............. 48
ansible_connection ...... 49
ansible_shell_type ....... 49
ansible_python_interpreter ....................................... 49
ansible_*_interpreter ... 49
改变行为参数的默认值 ........................................... 50
群组 .................................... 50
范例:部署一个 Django应用.................................. 51
别名和端口.................. 54
群组的群组.................. 54
为主机编号(宠物还是公牛 ) ................................. 55
在 inventory内部的主机和组变量 .................................. 55
在各自文件中的主机和组变量 ....................................... 57
动态 inventory..................... 59
动态 inventory脚本接口 ......................................... 60
编写动态 inventory脚本 ......................................... 61
预装 inventory脚本 ..... 65
将 inventory分割到多个文件 ......................................... 65
使用 add_host和 group_by在运行时添加条目 ............... 65
add_host ...................... 65
group_by ..................... 67
第 4章 变量与 fact................ 69
在 playbook中定义变量 ..... 69
检查变量的值 ..................... 70
registering 变量 ................... 70
fact ...................................... 74
查看与某台服务器关联的所有 fact ......................... 75
查看 fact子集 .............. 75
任何模块都可以返回 fact ........................................ 77
本地 fact ...................... 77
使用 set_fact定义新变量 .... 79
内置变量 ............................. 79
hostvars ....................... 80
inventory_hostname ..... 80
groups .......................... 81
在命令行设置变量 .............. 81
优先级 ................................. 82
第 5章 引入测试应用:Mezzanine. ....................................... 84
为什么向生产环境部署软件是一件复杂的事 ................. 84
PostgreSQL:数据库 ... 88
Gunicorn:应用服务器 ........................................... 88
Nginx:Web服务器 .... 89
Supervisor:进程管理器 ......................................... 90
第 6章 使用 Ansible部署 Mezzanine....................................91
列出 playbook中的 task...... 91
组织要部署的文件 .............. 92
变量和秘密变量 .................. 93
使用迭代(with_items)安装多个软件包 ...................... 95
向任务中添加 Become语句 96
更新 apt缓存 ...................... 97
使用 Git获取项目源码 ....... 98
将 Mezzanine和其他软件包安装到 virtualenv中 ......... 100
任务中的复杂参数:稍微跑个题 ............
序言
本书赢得的赞誉
大规模集群的配置管理工具一直都是提升效率的利器。新浪在 2003年前后开始使用 CFengine;在 2010年前后,为了解决 CFengine的一些问题,逐渐在一些业务中用 SSH进行批量命令执行和配置文件拉取,这种组合一直用到现在,管理着数万台服务器,但现在基本上已经以 SSH为主了。本书的译者在新浪负责很多配置管理系统的开发,以我们的经验来看,基于 SSH进行配置管理有很多好处,这也是我对 Ansible很感兴趣的地方。充分利用系统现成的机制,不仅省去了 Agent的安装,在数千台规模的大型数据中心,少一些中心化服务还意味着少了一些路由和安全策略的配置,省去了很多不必要的麻烦。当然,Ansible还有很多吸引人的地方,非常值得你去学习和发现。
——童剑新浪研发中心总经理
Ansible作为自动化系统运维的一大利器,在构建整个体系过程中有着举足轻重的地位。 DSL、幂等性、playbook、大量的模板等都是它的魅力所在,再加上易封装、接口调用方便, Ansible正在被越来越多的大公司采用,包括独立使用以及与其他工具(如 Puppet)结合使用。
本书通过大量简单易用的实例帮助读者快速上手,通读全书会让你对 Ansible有一个全面的了解,动手操作书中的实例,可快速掌握 Ansible,剩下的就交给你的灵感吧。
——刘宇 @守住每一天,金山西山居架构师《Puppet实战》作者,《Puppet实战手册》译者之一
对于 DevOps,我自己的理解是运维即开发,人管理代码,代码管理机器,而不是人直接管理机器。Ansible帮我们实现了运维人员向运维开发的转型,让繁杂、危险的运维工作变得简单、安全和可控。本书秉承了 Ansible这一工具简明的一贯特点,不是长篇累牍地讲解复杂技术原理,而是列举了大量简明的实例,拿来阅读半小时即可上手解决实际问题。
——程辉 UnitedStack公司创始人兼 CEO
我在几个小时内就疯狂地“啃”完了第 1版《奔跑吧 Ansible》的手稿: Lorin妙笔生花,对 Ansible的讲解如行云流水。听到他与 René合写第 2版的时候我感到非常兴奋。在第 2版中,两位作者向读者展示了如何将一个非常有用的实用工具应用得出神入化,我想不出有什么内容是他们没有讨论到的。
—Jan-Piet Mens,咨询顾问
Ansible的万用指南。本书不仅适用于入门,也适用于了解如何使用高级功能提升你的 Ansible技能。 —Matt Jaynes,High Velocity Ops首席工程师
Ansible的美妙在于,你可以从实践入手,而它又易于快速实现原型,很快就能迭代起来,并且能不断解决问题。这当然很棒。然而,随着时间的推移,这种方式会导致知识和理解上的偏差,而且很难去调和。
《奔跑吧 Ansible》(第 2版)恰恰可以解决这个问题。因为它从 Ansible的基础知识一直
讲解到使用 YAML和 Jinja2的复杂性。而且本书还包含许多现成的案例可供学习和测试,
可以帮助读者深入了解自动化构建与部署生产环境。
在过去几年的培训课程和实践工作中,我总是向同事和客户推荐这本书。
—Dag Wieers,自由职业 Linux系统工程师, Ansible长期贡献者和咨询顾问
本书既为大家提供了简单功能的讲解,同时也深入探讨了 Ansible的配置管理方法。本书还包含很多提示和指引,并覆盖了各种形式的案例,例如 AWS、Windows和 Docker。
—Ingo Jochim, itelligence GMS/CIS Cloud Implementation经理
Lorin和 René字字珠玑,妙合无痕。他们手把手带领读者完成创建和管理 Ansible项目的所有重要步骤。本书不单单是一本 Ansible的参考书,它还涵盖了官方文档中缺少的几个重要概念和主题。它是 Ansible初学者的优秀学习资源,同时也包含许多对 Ansible中高级使用者很有帮助的概念与技巧。
—Dominique Barton, confirm IT solutions DevOps工程师
不管你是一名新手,还是一名已经在使用 Ansible并且希望继续取得进步的老程序员,本书都精辟地涵盖了你所需要了解的内容。它与同类书籍最大的区别在于,它采用了真实的例子,并解释了如何实现以及为什么会这样,这一大特点将帮助你更加深入地理解 Ansible。
—Paul Angus, ShapeBlue技术 VP
第2版译者序
距离上一版《奔跑吧 Ansible》中文版问世已经两年有余,非常荣幸还能主导本次第 2版的翻译工作。自第 1版出版后,不管是大规模服务器配置管理、Ansible社区,还是我的工作,都有了很多变化。
我从专注于运维能力提升的专家岗位上离职,转而回归基础设施研发与运维团队的技术管理工作。在新的岗位上,我有三个深切的感触:第一,自动化配置管理领域的触角已经深入网络设备领域;第二,在数据中心与 IT基础设施中,仍然有部分领域难以避免地使用 Windows操作系统;第三,容器化接过云计算的接力棒,正在席卷整个行业。也许是作者也和我有类似的感受,第 2版《奔跑吧 Ansible》如期而至,添加了 Windows管理和网络设备管理的相关章节。同时,还重写了 Docker一章。
除了行业的变化外,Ansible的大版本也来到了 2.x。在这个大版本中,Ansible带来了不少改变与新特性。使用 Ansible新版本的同时,继续使用第 1版的《奔跑吧 Ansible》作为工具书显然会让读者产生很多困惑,第 2版的出版恰好可以解决这个问题。
在第 2版的翻译中,我尝试让我所管理的 SRE团队都参与到本书的翻译工作中,感谢各位同事的辛勤劳动。参与翻译的人员如下:杨振振(第 1章和第 15章)、刘德鑫(第 2至 4章)、高雪(第 5至 7章)、张冠男(第 8至 9章和第 19章)、刘阳龙(第 11至 12章和第 18章)、李震(第 10章、第 16至 17章)以及刘志远(第 13至 14章)。
第1版译者序
由于诸多原因,早在童年时代计算机就进入了我的生活。对计算机的迷恋最终将我带进了计算机工程领域。而让我真正从玩耍转向工程化地对待计算机的分水岭是,对系统管理领域的接触。好吧,不管多么不乐意,这类工作在那个年代就是被称作网管。从我刚开始入门系统管理的时候,我就一直有一个疑问:如果一家公司足够大,有上百台计算机,该怎么管理呢?总不能一台台远程桌面连上去吧?嗯,没错,那个时候我使用的还是 Windows,而上百台计算机对于当时的我来说已经是一个很夸张的数字了。2007年我加入新浪平台架构部,这里的工作为我真正打开了新世界的大门。那个时候,部门正在使用 CFEngine管理上百台机器、为不同功能的服务器划分角色、为相同功能的服务器进行编号(像为公牛编号那样)、为配置文件编写模板来减少硬编码,所有这一切都用一种工程实践的方法解决了我之前的所有疑问。后来,我才知道这个实践性很强的方法的名字——配置管理。转眼之间,我已经在新浪工作了七年之久。这七年间,我的职位与工作内容有多次变化,但所围绕的工作核心从未改变:如何让数千台服务器按照我们想要的方式运转。为了更好地达到这一目的,我尝试过各种配置管理的方式:从 CFEngine到 Puppet、SaltStack,甚至是自行开发配置管理工具。但是每一种方式都与我理想中那个遵循“ KISS原则”、易于学习,且在功能上具有无穷扩展空间的配置管理工具相差甚远——直到经同事文旭的推荐,我认识了 Ansible。Ansible的轻量、最小化抽象层及轻松扩展与收缩一下子就吸引了我。到目前为止,它是与我理想中的配置管理工具最接近的一个。这样优秀的工具我当然不会自己独享。我曾经在各种场合向正在寻找合适配置管理工具的朋友与同事推荐 Ansible。我发现有一部分朋友虽然给予了 Ansible正面的评价,却对缺少中文文档感觉略有不便。这让我意识到语言仍旧是部分技术人员学习的障碍之一。显然,我并不具备帮助技术人员提升英语阅读水平的能力,但至少我可以将这本《奔跑吧 Ansible》的中文版带给大家,希望本书可以帮助一些读者快速上手 Ansible。
由于水平所限,本书中难免出现一些翻译错误,诚恳地欢迎大家向我或者出版社反馈本书中的各种错误。
最后,我想要感谢赵新宇、陈明杰和刘宇等朋友,他们在我翻译本书的过程中为我提供了无私的帮助和支持。还要感谢我的夫人张若金的支持与理解。没有你们就不会有本书的出版。
序
2012年 2月 Ansible创立的时候,它还是一个非常简单的项目,随后它的快速发展令我们十分惊喜。现在,它已经是上千人参与开发的产品了(如果包括参与贡献想法的人还会更多),并且几乎在每个国家都有人在使用。在各种技术会议中也总是能找到一些人在使用它,这在计算机领域是一件很不寻常的事。
Ansible的不平凡源自于它的平凡。Ansible并不企图做盘古开天地般的创新,而是从那些聪明的家伙已经提出的想法中提炼出精华,并将这些想法尽可能地落地。
Ansible旨在探求某些学术上的 IT 自动化方法(它们本身就是对大型繁杂的商业套件的一种反映)与简单粗暴解决问题的脚本之间的平衡点。另外,我们如何能将配置管理系统、部署发布系统、编排系统(orchestration project)以及千奇百怪但是非常重要的 shell脚本库用一个单一系统替换呢?这恰恰是 Ansible 要实现的。
我们可以从 IT自动化技术栈中移除主要架构组件吗?去掉管理性守护进程,转而依赖于 OpenSSH,意味着系统转眼间就可以开始管理一台新的计算机,而不需要在被管理的机器上安装任何东西。更深一层来说,系统更趋于可靠和安全。
我注意到,尝试使用自动化
ISBN | 9787121351440,7121351447 |
---|---|
出版社 | 电子工业出版社 |
作者 | 洛林·霍克斯坦 (Lorin Hochstein) |
尺寸 | 16 |