内容简介
第1章 简介
关于版本的说明
Ansible的优势
Ansible如何运作
Ansible的精妙设计赏析
易读的语法
远程主机无须安装依赖
基于推送模式
使用Ansible管理小规模环境
内置模块
非常轻量的抽象层
Ansible太过于简单了吗
需要哪些基础知识
哪些内容不会涉及
安装Ansible
建立一台用于测试的服务器
使用Vagrant来创建测试服务器
将测试服务器的信息配置在Ansible中
使用ansible.cfg文件来简化配置
展望
第2章 playbook:一切的开始
一些准备工作
一个简单的playbook
定义Nginx的配置文件
创建一个定制的首页
创建一个webservers群组
运行这个playbook
YAML格式的playbook
文件起始
注释
字符串
布尔型
列表
字典
分行
剖析playbook
play
task
模块
将它们整合在一起
执行Ansible后发生变化了吗?跟踪主机状态
来点更酷炫的:添加TLS支持
生成TLS证书
变量
生成Nginx配置模板
handler
运行playbook
第3章 使用inventory描述你的服务器
inventory文件
准备工作:创建多台Vagrant虚拟机
inventory行为参数
ansible_connection
ansible_shell_type
ansible_python_interpreter
ansible_*_interpreter
改变行为参数的默认值
群组
范例:部署一个Django应用
别名和端口
群组的群组
为主机编号(宠物还是公牛)
在inventory内部的主机和组变量
在各自文件中的主机和组变量
动态inventory
动态inventory脚本接口
编写动态inventory脚本
预装inventory脚本
将inventory分割到多个文件
使用add_host和group_by在运行时添加条目
add_host
group_by
第4章 变量与fact
在playbook中定义变量
检查变量的值
registering变量
fact
查看与某台服务器关联的所有fact
查看fact子集
任何模块都可以返回fact
本地fact
使用set_fact定义新变量
内置变量
hostvars
inventory_hostname
groups
在命令行设置变量
优先级
第5章 引入测试应用:Mezzanine
为什么向生产环境部署软件是一件复杂的事
PostgreSQL:数据库
Gunicorn:应用服务器
Nginx:Web服务器
Supervisor:进程管理器
第6章 使用Ansible部署Mezzanine
列出playbook中的task
组织要部署的文件
变量和秘密变量
使用迭代(with_items)安装多个软件包
向任务中添加Become语句
更新apt缓存
使用Git获取项目源码
将Mezzanine和其他软件包安装到virtualenv中
任务中的复杂参数:稍微跑个题
配置数据库
从模板生成local_settings.py文件
运行django-manage命令
在应用环境中运行定制的Python脚本
设置服务配置文件
启用Nginx配置文件
安装TLS证书
安装Twitter计划任务
playbook全文
在Vagrant虚拟机上运行playbook
故障排查
无法拉取Git仓库代码
192.168.33.10.xip.io地址不可达
错误的请求(400)
将Mezzanine部署到多台主机
第7章 role:扩展你的playbook
role的基本构成
范例:database和mezzanine role
在你的playbook中使用role
pre-tasks和post-tasks
用于部署数据库的database role
用于部署Mezzanine的mezzanine role
使用ansible-galaxy创建role文件与目录
从属role
Ansible Galaxy
Web界面
命令行工具
将你自己的role发布到Galaxy
第8章 复杂的playbook
处理不良行为的命令:changed_when和failed_when
过滤器
默认过滤器
用于注册变量的过滤器
应用于文件路径的过滤器
编写你自己的过滤器
lookup
file
pipe
env
password
template
csvfile
dnstxt
redis_kv
etcd
编写你自己的lookup插件
更复杂的循环
with_lines
with_fileglob
with_dict
将循环结构用作lookup插件
循环控制
设置变量名称
为输出增加标签
include
动态引用
role include
block
利用block进行异常处理
使用Vault加密敏感数据
第9章 自定义host、run和handler
通过模式匹配指定主机
限制运行的主机
在控制主机上运行task
在涉及的主机以外的机器上运行task
逐台主机运行
一次运行一批主机
只执行一次
运行策略
linear策略
free策略
高级handler
Pre和Post task中的handler
ush handler
handlers listen
手动采集fact
从主机获取IP地址
第10章 回调插件
stdout插件
actionable插件
debug插件
dense插件
json插件
minimal插件
oneline插件
selective插件
skippy插件
其他插件
foreman插件
hipchat插件
jabber插件
junit插件
log_plays插件
logentries插件
logstash插件
mail插件
osx_say插件
profile_tasks插件
slack插件
timer插件
第11章 让Ansible快到飞起
SSH多路复用以及长连接保持
手动启动SSH多路复用
Ansible中的SSH多路复用配置
流水线
启用流水线
将主机配置为支持流水线
fact缓存
JSON文件作为fact缓存后端
Redis作为fact缓存后端
Memcached作为fact缓存后端
并行
异步执行并发任务
第12章 自定制模块
范例:检测远程服务器是否可达
使用script模块而不是自己写模块
实现can_reach模块
在哪里放置自定制模块
Ansible如何调用模块
用参数生成一个独立的Python脚本(只限于Python模块)
将模块复制到服务器
在服务器上创建一个参数文件(只限于非Python模块)
调用模块
期望输出
Ansible的输出变量
用Python实现模块
解析参数
获取参数的值
导入AnsibleModule辅助类
参数选项
AnsibleModule的初始化参数
返回成功或失败
调用外部命令
检查模式(演习模式)
文档化你的模块
调试模块
使用Bash实现模块
指定Bash的解释器路径
示例模块
第13章 Vagrant
Vagrant的便捷配置选项
端口转发和私有IP地址
代理转发
Ansible置备器
置备器何时运行
由Vagrant生成inventory
并行配置
指定群组
Ansible本地置备器
第14章 Amazon EC2
术语
实例
Amazon系统镜像
标签
指定认证凭据
环境变量
配置文件
必要条件:Boto Python库
动态inventory
inventory缓存
其他配置项
自动生成群组
使用标签定义动态群组
把标签应用到现有资源
更好听的群组名
EC2 Virtual Private Cloud和EC2 Classic
配置ansible.cfg支持使用EC2
启动新的实例
EC2密钥对
创建新的密钥
上传已有密钥
安全组
允许的IP地址
安全组端口
获取最新的AMI
向群组中添加一个新的实例
等待服务器启动
创建实例的幂等性方法
全部加在一起
指定Virtual Private Cloud
动态inventory和VPC
构建AMI
使用ec2_ami模块
使用Packer
其他模块
第15章 Docker
Docker与Ansible配合案例
Docker应用的生命周期
样例应用:Ghost
连接到 Docker Daemon
在本地机器上运行容器
从Dockerfile构建镜像
在本机上对多个容器进行编排
推送镜像到Docker registry
查询本地镜像
部署Docker化的应用
后端:Postgres
前端
前端:Ghost
前端:Nginx
清除容器
直连容器
Ansible Container
Conductor
创建Docker镜像
本地运行
发布镜像到registry
将容器部署到生产环境
第16章 调试Ansible playbook
人类可读的错误信息
调试SSH问题
debug模块
playbook调试器
assert模块
在执行前检查你的playbook
语法检查
列出host
列出task
检测模式
显示文件变化
限制指定的task运行
step
start-at-task
tags
第17章 管理Windows主机
连接到Windows
PowerShell
Windows模块
第一个playbook
升级Windows
添加本地用户
结论
第18章 使用Ansible管理网络设备
网络模块现状
所支持的网络供应商列表
网络设备的准备工作
支持SSH身份验证
模块如何工作
我们的第一个playbook
网络模块中的inventory和变量
本地连接
连接配置
身份验证变量
保存配置
使用文件中的配置
模板,模板,模板
收集fact
结论
第19章 AnsibleTower:Ansible企业版
订阅模式
试用Ansible Tower
Ansible Tower能解决什么问题
访问控制
项目管理
inventory管理
按作业模板运行作业
RESTful API
Ansible Tower的命令行
安装
创建用户
运行作业
以终为始
附录A SSH
附录B 在EC2认证中使用IAM role
术语表
参考文献