序 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
任務中的復雜參數:稍微跑個題 103
配置數據庫 106
從模闆生成 local_settings.py文件 107
運行 django-manage命令 . 110
在應用環境中運行定製的 Python腳本 111
設置服務配置文件 114
啓用 Nginx配置文件 117
安裝 TLS證書 117
安裝 Twitter計劃任務 119
playbook全文 119
在 Vagrant虛擬機上運行 playbook 123
故障排查 124
無法拉取 Git倉庫代碼 124
192.168.33.10.xip.io地址不可達 124
錯誤的請求(400) 125
將 Mezzanine部署到多颱主機 125
第 7章 role:擴展你的 playbook 126
role的基本構成 126
範例: database和 mezzanine role 127
在你的 playbook中使用 role 127
pre-tasks和 post-tasks 129
用於部署數據庫的 database role 130
用於部署 Mezzanine的 mezzanine role 132
使用 ansible-galaxy創建 role文件與目錄 137
從屬 role 138
Ansible Galaxy 139
Web界麵 139
命令行工具 139
將你自己的 role發布到 Galaxy 140
第 8章 復雜的 playbook 141
處理不良行為的命令: changed_when和 failed_when . 141
過濾器 145
默認過濾器 145
用於注冊變量的過濾器 145
應用於文件路徑的過濾器 146
編寫你自己的過濾器 . 147
lookup 148
file 149
pipe 150
env 150
password 150
template 151
csvfile 151
dnstxt 152
redis_kv 153
etcd 154
編寫你自己的 lookup插件 155
更復雜的循環 155
with_lines 156
with_fileglob 156
with_dict 157
將循環結構用作 lookup插件 158
循環控製 158
設置變量名稱 158
為輸齣增加標簽 160
include 161
動態引用 162
role include 162
block 164
利用 block進行異常處理 164
使用 Vault加密敏感數據 168
第 9章 自定義host、run和 handler. 170
通過模式匹配指定主機 170
限製運行的主機 171
在控製主機上運行 task 171
在涉及的主機以外的機器上運行 task 172
逐颱主機運行 173
一次運行一批主機 174
隻執行一次 175
運行策略 175
linear策略 176
free策略 177
高級 handler 179
Pre和 Post task中的 handler 179
flush handler 180
handlers listen 182
手動采集 fact 188
從主機獲取 IP地址 189
第 10章 迴調插件. 191
stdout插件 191
actionable 插件 192
debug插件 192
dense插件 193
json插件 193
minimal插件 194
oneline插件 195
selective 插件 195
skippy插件 195
其他插件 195
foreman插件 196
hipchat插件 196
jabber插件 197
junit插件 197
log_plays插件 198
logentries插件 198
logstash插件 198
mail插件 199
osx_say插件 199
profile_tasks插件 199
slack插件 200
timer插件 200
第 11章 讓 Ansible快到飛起..201
SSH多路復用以及長連接保持 201
手動啓動 SSH多路復用 202
Ansible中的 SSH多路復用配置 203
流水綫 205
啓用流水綫 205
將主機配置為支持流水綫 205
fact緩存 207
JSON文件作為 fact緩存後端 208
Redis作為 fact緩存後端 209
Memcached作為 fact緩存後端 209
並行 210
異步執行並發任務 211
第 12章 自定製模塊 213
範例:檢測遠程服務器是否可達 213
使用 script模塊而不是自己寫模塊 213
實現 can_reach模塊 214
在哪裏放置自定製模塊 214
Ansible如何調用模塊 215
用參數生成一個獨立的 Python腳本(隻限於 Python模塊) 215
將模塊復製到服務器 . 215
在服務器上創建一個參數文件(隻限於非 Python模塊) 215
調用模塊 216
期望輸齣 216
Ansible的輸齣變量 217
用 Python實現模塊 217
解析參數 219
獲取參數的值 220
導入 AnsibleModule輔助類 220
參數選項 221
AnsibleModule的初始化參數 223
返迴成功或失敗 227
調用外部命令 227
檢查模式 (演習模式 ) 229
文檔化你的模塊 230
調試模塊 231
使用 Bash實現模塊 233
指定 Bash的解釋器路徑 234
示例模塊 235
第 13章 Vagrant 236
Vagrant的便捷配置選項 236
端口轉發和私有 IP地址 236
代理轉發 238
Ansible置備器 238
置備器何時運行 239
由 Vagrant生成 inventory . 239
並行配置 240
指定群組 241
Ansible本地置備器 242
第 14章 Amazon.EC2. 244
術語 246
實例 246
Amazon 係統鏡像 246
標簽 247
指定認證憑據 247
環境變量 248
配置文件 248
必要條件: Boto Python 庫 249
動態 inventory 249
inventory 緩存 251
其他配置項 252
自動生成群組 252
使用標簽定義動態群組 253
把標簽應用到現有資源 253
更好聽的群組名 254
EC2 Virtual Private Cloud和 EC2 Classic 255
配置 ansible.cfg 支持使用 EC2 256
啓動新的實例 256
EC2 密鑰對 258
創建新的密鑰 258
上傳已有密鑰 260
安全組 260
允許的 IP 地址 261
安全組端口 262
獲取最新的 AMI 262
嚮群組中添加一個新的實例 264
等待服務器啓動 266
創建實例的冪等性方法 267
全部加在一起 267
指定 Virtual Private Cloud 270
動態 inventory和 VPC 274
構建 AMI 274
使用 ec2_ami模塊 274
使用 Packer 275
其他模塊 279
第 15章 Docker 280
Docker與 Ansible配閤案例 281
Docker應用的生命周期 282
樣例應用: Ghost 283
連接到 Docker Daemon 283
在本地機器上運行容器 283
從 Dockerfile 構建鏡像 284
在本機上對多個容器進行編排 286
推送鏡像到 Docker registry 287
查詢本地鏡像 289
部署 Docker化的應用 291
後端: Postgres 291
前端 292
前端: Ghost 293
前端: Nginx 293
清除容器 294
直連容器 294
Ansible Container 296
Conductor 296
創建 Docker鏡像 297
本地運行 301
發布鏡像到 registry 302
將容器部署到生産環境 303
第 16章 調試 Ansible.playbook. 304
人類可讀的錯誤信息 304
調試 SSH問題 305
debug模塊 307
playbook調試器 307
assert模塊 309
在執行前檢查你的 playbook 311
語法檢查 311
列齣 host 311
列齣 task 312
檢測模式 312
顯示文件變化 313
限製指定的 task運行 313
step 313
start-at-task 314
tags 314
第 17章 管理 Windows主機..316
連接到 Windows 316
PowerShell 317
Windows 模塊 320
第一個 playbook 320
升級 Windows 321
添加本地用戶 323
結論 326
第 18章 使用 Ansible管理網絡設備 327
網絡模塊現狀 327
所支持的網絡供應商列錶 . 328
網絡設備的準備工作 328
支持 SSH身份驗證 329
模塊如何工作 331
我們的第一個 playbook 332
網絡模塊中的 inventory和變量 333
本地連接 335
連接配置 335
身份驗證變量 336
保存配置 336
使用文件中的配置 338
模闆,模闆,模闆 341
收集 fact 344
結論 345
第 19章 Ansible.Tower:Ansible企業版. 346
訂閱模式 347
試用 Ansible Tower 347
Ansible Tower能解決什麼問題 348
訪問控製 348
項目管理 349
inventory管理 350
按作業模闆運行作業 . 351
RESTful API 354
Ansible Tower的命令行 354
安裝 355
創建用戶 355
運行作業 357
以終為始 358
附錄A SSH 359
附錄B 在 EC2認證中使用 IAM.role 369
術語錶 373
參考文獻 379
· · · · · · (
收起)