注重体验与质量的电子书资源下载网站
分类于: 计算机基础 云计算&大数据
简介
奔跑吧Ansible 豆 7.4分
资源最后更新于 2020-08-19 16:03:57
作者:Lorin Hochstein
译者:陈尔冬
出版社:电子工业出版社
出版日期:2016-01
ISBN:9787121275074
文件格式: pdf
标签: Ansible 自动化部署 Python DevOps 计算机 基础设施 运维 devops
简介· · · · · ·
Ansible是近年用户量急速蹿升的开源配置管理工具。在Ansible之前,行业中已经有很多开源配置管理工具了,特别是鼎鼎大名的Puppet,堪称配置管理界的超级巨星。然而,Ansible依靠它的简单易用、"零依赖"及弱抽象还是获得了无数开发者和运维工程师的青睐。遗憾的是,由于Ansible还很年轻,除了官方文档外,其他相关的优秀文档可谓凤毛麟角。而《奔跑吧Ansible》恰恰就是为了缓解这一现状而写的。作者在《奔跑吧Ansible》中演示了如何使用Ansible在接近真实的生产环境进行管理的案例,这既演示了Ansible的强大功能,又能够帮助读者快速入门与上手,非常适合作为官方文档的扩展资料来阅读。
目录
原书推荐序
前言
第1章 概述 1
关于版本的说明 2
Ansible 的优点 2
Ansible 如何运作 3
Ansible 的精妙设计有哪些 4
易读的语法 4
远程主机无须安装任何依赖 5
基于推送模式 5
Ansible 管理小规模集群 6
内置模块 6
非常轻量的抽象层 7
Ansible 太过于简单了吗 8
我需要具备哪些基础知识 9
哪些内容不会涉及 9
安装Ansible 10
建立一台用于测试的服务器 11
使用Vagrant 来创建测试服务器 11
将测试服务器的信息配置在Ansible 中 15
使用ansible.cfg 文件来简化配置 16
继续前进 20
第2章 playbook:一切的开端 21
一些准备工作 21
一个简单的playbook 22
指定一个nginx 配置文件 24
创建一个定制的首页 25
创建一个webservers 群组 25
运行这个playbook 26
playbook 是YAML 格式的 28
文件的起始 28
注释 28
字符串 28
布尔型 29
列表 29
字典 30
折行 30
剖析playbook 31
play 32
task 33
模块 34
将它们整合在一起 35
执行Ansible 后发生变化了吗?跟踪主机状态 36
来点更酷炫的:添加TLS 支持 36
生成TLS 证书 38
变量 38
生成nginx 配置模板 40
handler 41
运行playbook 43
第3章 inventory:描述你的服务器 45
inventory 文件 45
准备工作:创建多台Vagrant 虚拟机 46
inventory 行为参数 49
ansible_connection 50
ansible_shell_type 50
ansible_python_interpreter 50
ansible_*_interpreter 50
改变行为参数的默认值 51
群组 51
范例:部署一个Django 应用 52
别名和端口 55
群组嵌套 55
编号主机(宠物vs. 公牛) 56
主机与群组变量:在inventory 内部 56
主机和群组变量:在各自的文件中 58
动态inventory 60
动态inventory 脚本的接口 61
编写动态inventory 脚本 62
预装的inventory 脚本 65
将inventory 分割到多个文件中 66
使用add_host 和group_by 在运行时添加条目 66
add_host 66
group_by 68
第4章 变量与fact 71
在playbook 中定义变量 71
查看变量的值 72
注册变量 72
fact 76
查看与某台服务器关联的所有fact 77
查看fact 子集 77
任何模块都可以返回fact 79
本地fact 79
使用set_fact 定义新变量 80
内置变量 81
hostvars 81
inventory_hostname 82
groups 82
在命令行设置变量 83
优先级 84
第5章 初识Mezzanine:我们的测试应用 85
为什么向生产环境部署软件是一件复杂的事 85
PostgreSQL:数据库 88
Gunicon:应用服务器 88
nginx:Web 服务器 89
Supervisor:进程管理器 90
第6章 使用Ansible 部署Mezzanine 91
列出playbook 中的task 91
组织要部署的文件 92
变量与私密变量 92
使用迭代(with_items)安装多个软件包 94
向task 中添加sudo 语句 96
更新apt 缓存 96
使用Git 来Check Out 项目源码 98
将Mezzanine 和其他软件包安装到virtualenv 中 99
task 中的复杂参数:稍微跑个题 102
创建数据库和数据库用户 104
从模板生成local_settings.py 文件 105
运行django-manage 命令 108
在应用环境中运行自定义的Python 脚本 110
设置服务的配置文件 112
启用nginx 配置文件 115
安装TLS 证书 116
安装Twitter 计划任务 117
playbook 全文 118
在Vagrant 虚拟机上运行playbook 121
将Mezzanine 部署到多台主机 122
第7章 复杂playbook 123
在控制主机上运行task 123
在涉及的主机以外的机器上运行task 124
手动采集fact 124
逐台主机运行 125
只执行一次 126
处理不利行为命令:changed_when 和failed_when 127
从主机获取IP 地址 131
使用Vault 加密敏感数据 132
通过模式匹配指定主机 133
限定某些主机运行 134
过滤器 135
default 过滤器 135
用于注册变量的过滤器 135
应用于文件路径的过滤器 136
编写你自己的过滤器 137
lookup 138
file 139
pipe 140
env 140
password 141
template 141
csvfile 141
dnstxt 142
redis_kv 143
etcd 144
编写你自己的lookup 插件 145
更复杂的循环 145
with_lines 146
with_fileglob 146
with_dict 147
将循环结构用作lookup 插件 148
第8章 role:扩展你的playbook 149
role 的基本构成 149
范例:Database 和Mezzanine role 150
在你的playbook 中使用role 150
Pre-Task 和Post-Task 152
用于部署数据库的“database” role 153
用于部署Mezzanine 的“mezzanine” role 155
使用ansible-galaxy 创建role 文件与目录 160
从属role 160
Ansible Galaxy 161
Web 界面 161
命令行工具 162
向Galaxy 贡献你自己编写的role 163
第9章 让Ansible 快到飞起 165
SSH Multiplexing 与ControlPersist 165
手动启用SSH Multiplexing 166
Ansible 中的SSH Multiplexing 选项 167
pipelining 169
启用pipelining 169
将主机配置为支持pipelining 169
fact 缓存 171
JSON 文件fact 缓存后端 172
Redis fact 缓存后端 173
Memcached fact 缓存后端 173
并行性 174
加速模式 175
火球模式 175
第10章 自定义模块 177
范例:检测远程服务器是否可达 177
使用script 模块替代编写自己的模块 177
模块形式的can_reach 178
自定义模块该放到哪里 179
Ansible 如何调用模块 179
生成带有参数的独立Python 脚本(仅限Python 模块) 179
将模块复制到远程主机 179
在远程主机上创建参数文件(仅限非Python 模块) 179
调用模块 180
预期的输出 181
Ansible 预期的输出变量 181
使用Python 来实现模块 182
解析参数 183
访问参数 184
导入AnsibleModule 辅助类 184
参数选项 185
AnsibleModule 的初始化参数 188
返回成功或失败 191
调用外部命令 192
检测模式(dry run) 193
文档化你的模块 194
调试你的模块 196
使用Bash 实现模块 197
为Bash 指定替代的位置 198
范例模块 199
第11章 Vagrant 201
便捷的Vagrant 配置项 201
端口转发和私有IP 地址 201
启用agent forwarding 203
Ansible 置备器 203
置备器何时运行 204
由Vagrant 生成inventory 204
并行配置 205
指定群组 206
第12章 Amazon EC2 209
术语 211
实例 211
Amazon 系统镜像 211
标签 211
指定认证凭据 212
环境变量 212
配置文件 213
必要条件:Boto Python 库 213
动态inventory 214
inventory 缓存 216
其他配置项 217
自动生成群组 217
使用标签定义动态群组 217
把标签应用到现有资源 218
更好听的群组名 219
EC2 Virtual Private Cloud(VPC)和EC2 Classic 219
配置ansible.cfg 支持使用EC2 220
启动新的实例 221
EC2 密钥对 222
创建新的密钥 222
上传已有密钥 224
安全组 224
允许的IP 地址 226
安全组端口 226
获取最新的AMI 226
向群组中添加一个新的实例 227
等待服务器启动 230
创建实例的幂等性方法 231
全部加在一起 231
指定Virtual Private Cloud 233
动态inventory 和VPC 237
构建 AMI 238
使用ec2_ami 模块 238
使用Packer 238
其他模块 242
第13章 Docker 243
Docker 与Ansible 配合案例 244
Docker 应用的生命周期 244
容器化我们的Mezzanine 应用 245
使用Ansible 创建Docker 镜像 247
Mezzanine 248
其他的容器镜像 253
Postgres 253
Memcached 253
Nginx 254
certs 255
构建镜像 256
部署Docker 化的应用 256
启动数据库容器 257
获取数据库容器的IP 地址和映射端口 257
等待数据库启动 261
初始化数据库 263
启动Memcached 容器 264
启动Mezzanine 容器 264
启动证书容器 265
启动Nginx 容器 265
完整的playbook 266
第14章 调试Ansible playbook 269
调试SSH 问题 269
debug 模块 271
assert 模块 271
在执行前检查你的playbook 273
语法检查 273
列出主机 273
列出task 274
检测模式 274
diff(显示文件差异) 275
限制特定的task 运行 275
step 275
start-at-task 276
tags 276
继续向前 277
附录A SSH 279
附录B 默认设置 289
附录C 为EC2 证书使用IAM role 293
术语 297
参考文献 303
索引 305
前言
第1章 概述 1
关于版本的说明 2
Ansible 的优点 2
Ansible 如何运作 3
Ansible 的精妙设计有哪些 4
易读的语法 4
远程主机无须安装任何依赖 5
基于推送模式 5
Ansible 管理小规模集群 6
内置模块 6
非常轻量的抽象层 7
Ansible 太过于简单了吗 8
我需要具备哪些基础知识 9
哪些内容不会涉及 9
安装Ansible 10
建立一台用于测试的服务器 11
使用Vagrant 来创建测试服务器 11
将测试服务器的信息配置在Ansible 中 15
使用ansible.cfg 文件来简化配置 16
继续前进 20
第2章 playbook:一切的开端 21
一些准备工作 21
一个简单的playbook 22
指定一个nginx 配置文件 24
创建一个定制的首页 25
创建一个webservers 群组 25
运行这个playbook 26
playbook 是YAML 格式的 28
文件的起始 28
注释 28
字符串 28
布尔型 29
列表 29
字典 30
折行 30
剖析playbook 31
play 32
task 33
模块 34
将它们整合在一起 35
执行Ansible 后发生变化了吗?跟踪主机状态 36
来点更酷炫的:添加TLS 支持 36
生成TLS 证书 38
变量 38
生成nginx 配置模板 40
handler 41
运行playbook 43
第3章 inventory:描述你的服务器 45
inventory 文件 45
准备工作:创建多台Vagrant 虚拟机 46
inventory 行为参数 49
ansible_connection 50
ansible_shell_type 50
ansible_python_interpreter 50
ansible_*_interpreter 50
改变行为参数的默认值 51
群组 51
范例:部署一个Django 应用 52
别名和端口 55
群组嵌套 55
编号主机(宠物vs. 公牛) 56
主机与群组变量:在inventory 内部 56
主机和群组变量:在各自的文件中 58
动态inventory 60
动态inventory 脚本的接口 61
编写动态inventory 脚本 62
预装的inventory 脚本 65
将inventory 分割到多个文件中 66
使用add_host 和group_by 在运行时添加条目 66
add_host 66
group_by 68
第4章 变量与fact 71
在playbook 中定义变量 71
查看变量的值 72
注册变量 72
fact 76
查看与某台服务器关联的所有fact 77
查看fact 子集 77
任何模块都可以返回fact 79
本地fact 79
使用set_fact 定义新变量 80
内置变量 81
hostvars 81
inventory_hostname 82
groups 82
在命令行设置变量 83
优先级 84
第5章 初识Mezzanine:我们的测试应用 85
为什么向生产环境部署软件是一件复杂的事 85
PostgreSQL:数据库 88
Gunicon:应用服务器 88
nginx:Web 服务器 89
Supervisor:进程管理器 90
第6章 使用Ansible 部署Mezzanine 91
列出playbook 中的task 91
组织要部署的文件 92
变量与私密变量 92
使用迭代(with_items)安装多个软件包 94
向task 中添加sudo 语句 96
更新apt 缓存 96
使用Git 来Check Out 项目源码 98
将Mezzanine 和其他软件包安装到virtualenv 中 99
task 中的复杂参数:稍微跑个题 102
创建数据库和数据库用户 104
从模板生成local_settings.py 文件 105
运行django-manage 命令 108
在应用环境中运行自定义的Python 脚本 110
设置服务的配置文件 112
启用nginx 配置文件 115
安装TLS 证书 116
安装Twitter 计划任务 117
playbook 全文 118
在Vagrant 虚拟机上运行playbook 121
将Mezzanine 部署到多台主机 122
第7章 复杂playbook 123
在控制主机上运行task 123
在涉及的主机以外的机器上运行task 124
手动采集fact 124
逐台主机运行 125
只执行一次 126
处理不利行为命令:changed_when 和failed_when 127
从主机获取IP 地址 131
使用Vault 加密敏感数据 132
通过模式匹配指定主机 133
限定某些主机运行 134
过滤器 135
default 过滤器 135
用于注册变量的过滤器 135
应用于文件路径的过滤器 136
编写你自己的过滤器 137
lookup 138
file 139
pipe 140
env 140
password 141
template 141
csvfile 141
dnstxt 142
redis_kv 143
etcd 144
编写你自己的lookup 插件 145
更复杂的循环 145
with_lines 146
with_fileglob 146
with_dict 147
将循环结构用作lookup 插件 148
第8章 role:扩展你的playbook 149
role 的基本构成 149
范例:Database 和Mezzanine role 150
在你的playbook 中使用role 150
Pre-Task 和Post-Task 152
用于部署数据库的“database” role 153
用于部署Mezzanine 的“mezzanine” role 155
使用ansible-galaxy 创建role 文件与目录 160
从属role 160
Ansible Galaxy 161
Web 界面 161
命令行工具 162
向Galaxy 贡献你自己编写的role 163
第9章 让Ansible 快到飞起 165
SSH Multiplexing 与ControlPersist 165
手动启用SSH Multiplexing 166
Ansible 中的SSH Multiplexing 选项 167
pipelining 169
启用pipelining 169
将主机配置为支持pipelining 169
fact 缓存 171
JSON 文件fact 缓存后端 172
Redis fact 缓存后端 173
Memcached fact 缓存后端 173
并行性 174
加速模式 175
火球模式 175
第10章 自定义模块 177
范例:检测远程服务器是否可达 177
使用script 模块替代编写自己的模块 177
模块形式的can_reach 178
自定义模块该放到哪里 179
Ansible 如何调用模块 179
生成带有参数的独立Python 脚本(仅限Python 模块) 179
将模块复制到远程主机 179
在远程主机上创建参数文件(仅限非Python 模块) 179
调用模块 180
预期的输出 181
Ansible 预期的输出变量 181
使用Python 来实现模块 182
解析参数 183
访问参数 184
导入AnsibleModule 辅助类 184
参数选项 185
AnsibleModule 的初始化参数 188
返回成功或失败 191
调用外部命令 192
检测模式(dry run) 193
文档化你的模块 194
调试你的模块 196
使用Bash 实现模块 197
为Bash 指定替代的位置 198
范例模块 199
第11章 Vagrant 201
便捷的Vagrant 配置项 201
端口转发和私有IP 地址 201
启用agent forwarding 203
Ansible 置备器 203
置备器何时运行 204
由Vagrant 生成inventory 204
并行配置 205
指定群组 206
第12章 Amazon EC2 209
术语 211
实例 211
Amazon 系统镜像 211
标签 211
指定认证凭据 212
环境变量 212
配置文件 213
必要条件:Boto Python 库 213
动态inventory 214
inventory 缓存 216
其他配置项 217
自动生成群组 217
使用标签定义动态群组 217
把标签应用到现有资源 218
更好听的群组名 219
EC2 Virtual Private Cloud(VPC)和EC2 Classic 219
配置ansible.cfg 支持使用EC2 220
启动新的实例 221
EC2 密钥对 222
创建新的密钥 222
上传已有密钥 224
安全组 224
允许的IP 地址 226
安全组端口 226
获取最新的AMI 226
向群组中添加一个新的实例 227
等待服务器启动 230
创建实例的幂等性方法 231
全部加在一起 231
指定Virtual Private Cloud 233
动态inventory 和VPC 237
构建 AMI 238
使用ec2_ami 模块 238
使用Packer 238
其他模块 242
第13章 Docker 243
Docker 与Ansible 配合案例 244
Docker 应用的生命周期 244
容器化我们的Mezzanine 应用 245
使用Ansible 创建Docker 镜像 247
Mezzanine 248
其他的容器镜像 253
Postgres 253
Memcached 253
Nginx 254
certs 255
构建镜像 256
部署Docker 化的应用 256
启动数据库容器 257
获取数据库容器的IP 地址和映射端口 257
等待数据库启动 261
初始化数据库 263
启动Memcached 容器 264
启动Mezzanine 容器 264
启动证书容器 265
启动Nginx 容器 265
完整的playbook 266
第14章 调试Ansible playbook 269
调试SSH 问题 269
debug 模块 271
assert 模块 271
在执行前检查你的playbook 273
语法检查 273
列出主机 273
列出task 274
检测模式 274
diff(显示文件差异) 275
限制特定的task 运行 275
step 275
start-at-task 276
tags 276
继续向前 277
附录A SSH 279
附录B 默认设置 289
附录C 为EC2 证书使用IAM role 293
术语 297
参考文献 303
索引 305