原書推薦序
前言
第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
· · · · · · (
收起)