《Ansible快速入门:技术原理与实战》以新的自动化运维工具Ansible为主要内容,侧重于实战,由浅入深地介绍了Ansible以及周边产品Ansible Galaxy和Ansible Tower的用法。本书共计6章,前4章由浅及深、层层递进地介绍了Ansible的使用方法。第5章着重介绍了Ansible的代码分享机制role以及其分享平台Ansible Galaxy。第6章概括性地介绍了企业级软件Ansible Tower。全书的叙述风格通俗易懂,没有过多地引入复杂的概念,侧重于讲解原理,立足于实战,引领Ansible新手轻松入门。
Ansible是近几年出现的新的自动化运维工具,可以对机群进行软件安装、配置和应用部署,而《Ansible快速入门:技术原理与实战》是一本Ansible入门书籍,炼了Ansible中的精华,侧重于实战,全书代码均实测过,是一本不可多得的Ansible入门书。
内容介绍
Ansible是对机群进行软件安装、配置和应用部署的自动化工具。自2012年Ansible出现后,以其使用简单、功能实用等特点得到了广泛关注,成为自动化运维工具中的冉冉新星。仅三年后就被红帽(RedHat)公司收购,目前受到众多软件公司的关注、推广和使用。自动化部署无论对系统管理员还是对软件开发人员来说,都会减少重复的手工操作,提高部署效率。Ansible作为学习成本小、学习路径短的一款工具,更是值得了解和使用。
作为一本Ansible入门书籍,读者只需对Linux有最基本的了解就可以轻松读懂本书。
本书的内容共计6章,分为以下三个部分:
第一部分Ansible基本工具的讲解(第1章~第4章)
本书首先介绍了Ansible架构,然后讲解了Ansible的主要概念,接着又介绍了一些具体使用方法,步步递进、层层深入地介绍了Ansible的相关知识。
第4章对前面3章中的知识细节进行了补充,以便读者能够深入理解Ansible的基本使用方法。
第二部分role和衍生工具AnsibleGalaxy的介绍(第5章)
role是Ansible最为推荐的重用代码的方式,并为其开发了AnsibleGalaxy代码分享网站。但因其概念较为复杂,所以对其单独进行讲解。
第三部分企业级收费软件AnsibleTower介绍(第6章)
企业级用户面临着更加复杂的应用环境和更高的安全要求,AnsibleTower就是一款解决企业级用户难题的收费软件。
代码的运行环境
建议读者安装Linux虚拟机作为Ansible的管理节点来测试本书中的代码。Ansible目前已被红帽公司收购,对RedHatLinux系统的支持较为完善,建议读者最好选择RedHatLinux7或CentOS7。
排版约定
为了使读者能快速把握到代码的重点,本书中代码的重要部分用加粗字体表示强调。
例如,下面的代码强调变量“ansible_os_family”的用法:
---
-hosts:all
user:root
tasks:
-name:echosystem
shell:echo{{ansible_os_family}}
-nameinstallntponDebianlinux
apt:name=gitstate=installed
when:ansible_os_family=="Debian"
-nameinstallntponredhatlinux
yum:name=gitstate=present
勘误信息
笔者对本书中所有的代码都进行了完整的测试,书中的文字也经过了反复的斟酌。尽管如此,由于时间紧迫且作者水平有限,错误和疏漏难以避免,还需要广大读者的反馈和修订,以使得本书更加完善。因此,如果您发现书中的任何错误,小到错别字,大到代码运行错误,都希望您能及时反馈。您的任何一次勘误,都会令笔者和其他读者受益,再次表示感谢。
勘误地址:
https://github.com/ansible-book/errata
或者
http://getansible.com/reference/errata
反馈勘误方法:
提问题到Github项目上:https://github.com/ansible-book/errata
发邮件给笔者:shijingjing02@163.com
致谢
感谢同组(Labs和Insights)的同事对本书早期版本的肯定,使我受到鼓舞,有信心编辑成册。感谢我的经理赵东在公司内部推广宣传,感谢周兆林(Jaylin)对早期代码仔细认真的测试,感谢傅炜(网名:TekkamanNinja)多次对文字提出大量的修改建议。
这是笔者第一次写书,在写书的过程中耗费了大量的时间和精力,若是没有家人的鼎力支持,这本书根本无法完成。尤其感谢老公为我分担了怀孕和育儿的大量调研工作,使我能够有时间投入本书的写作中。
本书的后期写作和修订正值我怀孕分娩前后,时间上难免拖拉,感谢本书的编辑安娜对我的理解和支持。
史晶晶,毕业于吉林大学计算机与科学技术专业,资深软件工程师,目前在红帽软件从事Linux与云平台的工具开发工作。
第1章 Ansible介绍
1.1 Ansible介绍
1.2 Ansible解决了什么运维痛点
1.3 架构
1.3.1 Ansible的架构
1.3.2 Ansible Tower的架构
第2章 Ansible入门
2.1 安装Ansible
2.1.1 在管理员的电脑上安装
2.1.2 被管理的远程主机
2.2 Ansible管理哪些主机
2.2.1 什么是主机目录
2.2.2 主机目录配置文件
2.3 Ansible用命令管理主机
2.3.1 Ansible命令的格式
2.3.2 Ansible命令的功能
2.4 Ansible用脚本管理主机
2.4.1 执行脚本Playbook的方法
2.4.2 Playbook的例子
2.4.3 Play和Playbook
2.5 Ansible模块
2.5.1 什么是Ansible模块
2.5.2 在命令行里使用模块
2.5.3 在Playbook脚本中使用模块
2.5.4 Ansible模块的特点
2.5.5 常用模块
第3章 Ansible进阶
3.1 Ansible的配置
3.1.1 可以配置什么
3.1.2 Ansible配置文件的优先级
3.2 主机清单
3.2.1 远程主机的分组
3.2.2 设置连接参数
3.2.3 变量
3.3 Ansible的脚本Playbook
3.3.1 Playbook的文件格式YAML
3.3.2 执行Playbook的命令
3.3.3 Playbook的基本语法
3.3.4 变量
3.3.5 Playbook也有逻辑控制语句
3.3.6 重用Playbook
3.3.7 用标签,实现执行Playbook中的部分任务
3.4 更多的Ansible模块
3.4.1 模块的分类
3.4.2 Extra模块的使用方法
3.4.3 命令行查看模块的用法
3.5 最佳使用方法
3.5.1 写Playbook的原则
3.5.2 参考别人的Playbook
第4章 Ansible Playbook杂谈
4.1 再谈Ansible变量
4.1.1 变量的作用域
4.1.2 变量的优先级
4.2 使用lookup访问外部文件或数据库中的数据
4.2.1 lookup读取文件
4.2.2 lookup生成随机密码
4.2.3 lookup读取环境变量
4.2.4 lookup读取Linux命令的执行结果
4.2.5 lookup读取template变量替换后的文件
4.2.6 lookup读取配置文件
4.2.7 lookup读取CSV文件的指定单元
4.2.8 lookup读取DNS解析的值
4.2.9 更多的lookup功能
4.3 过滤器
4.3.1 过滤器使用的位置
4.3.2 过滤器对普通变量的操作
4.3.3 过滤器对文件路径的操作
4.3.4 过滤器对字符串变量的操作
4.3.5 过滤器对JSON的操作
4.3.6 过滤器对数据结构的操作
4.3.7 过滤器的链式/连续使用
4.4 测试变量或表达式是否符合条件
4.4.1 测试字符串
4.4.2 比较版本
4.4.3 测试List的包含关系
4.4.4 测试文件路径
4.4.5 测试任务的执行结果
4.5 认识插件
4.5.1 插件类型
4.5.2 常用的插件介绍
第5章 role和Ansible Galaxy
5.1 role和Ansible Galaxy的简要介绍
5.1.1 role
5.1.2 Ansible Galaxy
5.2 role的放置位置
5.2.1 当前目录的roles文件夹下
5.2.2 环境变量ANSIBLE_ROLES_PATH定义的文件夹
5.2.3 Ansible配置文件中roles_path定义的文件夹
5.2.4 默认文件夹/etc/ansible/roles
5.3 在Playbook中如何调用role
5.3.1 调用最简单的role
5.3.2 通过pre_tasks和post_tasks调整role和任务的顺序
5.3.3 调用带有参数的role
5.3.4 与when一起使用role
5.4 如何写role
5.4.1 role的完整定义
5.4.2 默认变量和普通变量的区别
5.4.3 tasks/main.yml如何使用变量、静态文件和模板
5.5 role的依赖
5.6 Ansible Galaxy网站介绍
5.6.1 从Ansible Galaxy网站上下载role
5.6.2 分享你的role
5.7 演示role的创建和分享
5.7.1 改造单个的Playbook为role
5.7.2 在Ansible Galaxy中分享role
第6章 Ansible Tower
6.1 为什么要用Ansible Tower
6.1.1 Ansible和Tower的用户视角架构图
6.1.2 Ansible Tower的主要功能
6.2 如何使用Ansible Tower
6.2.1 安装方法
6.2.2 使用方法
6.2.3 总结
6.3 与第三方平台的整合
6.3.1 Ansible Tower API
6.3.2 Ansible Tower提供的命令行工具
附录A