Terraform 實戰 Terraform in Action

Scott Winkler

  • 出版商: 人民郵電
  • 出版日期: 2022-04-01
  • 售價: $599
  • 貴賓價: 9.5$569
  • 語言: 簡體中文
  • 頁數: 349
  • ISBN: 7115584850
  • ISBN-13: 9787115584854
  • 此書翻譯自: Terraform in Action
  • 立即出貨 (庫存=1)

  • Terraform 實戰-preview-1
  • Terraform 實戰-preview-2
Terraform 實戰-preview-1

買這商品的人也買了...

商品描述

本書基於實際項目,揭示如何使用Terraform自動擴展和管理基礎架構。本書重點介紹了Terraform 0.12的語法、基礎知識和高級設計(如零停機時間部署和創建Terraform提供程序)。本書主要內容包括如何使用Terraform,如何管理Terraform資源的生命周期,如何編程,如何在AWS雲中部署多層的Web應用程序,如何實現無服務器的部署,如何通過Terraform部署服務器,如何實現零停機部署,如何測試、重構,如何擴展Terraform,如何通過Terraform自動部署,如何實現安全管理。

本書適合作為系統管理員、DevOps工程師、開發人員的自學和參考用書。

作者簡介

Scott Winkler是一位DevOps工程师,也是Terraform的专业人士。他在HashiConf和HashiTalks上展示过自己的成果,并且是HashiCorp的核心贡献者。Scott在社区中很活跃,开发了许多模块和提供程序。在空闲时间,Scott喜欢骑马。Scott还负责提供Terraform的独立咨询服务。

目錄大綱

目 錄

 

 

 

第 一部分 Terraform訓練營

第 1章 Terraform入門 3

1.1 Terraform的優點 4

1.1.1 置備工具 5

1.1.2 易於使用 5

1.1.3 免費且開源的軟件 5

1.1.4 聲明式編程 6

1.1.5 雲無關 6

1.1.6 表達能力強且高度可擴展 7

1.2 “Hello Terraform!” 7

1.2.1 編寫Terraform配置 8

1.2.2 配置AWS提供程序 10

1.2.3 初始化Terraform 11

1.2.4 部署EC2實例 12

1.2.5 銷毀EC2實例 16

1.3 新的“Hello Terraform!” 18

1.3.1 修改Terraform配置 19

1.3.2 應用修改 20

1.3.3 銷毀基礎設施 20

1.4 爐邊談話 21

小結 21

第 2章 Terraform資源的生命周期 22

2.1 過程概述 22

2.2 聲明本地文件資源 24

2.3 初始化工作空間 25

2.4 生成執行計劃 26

2.5 創建本地文件資源 30

2.6 執行no-op 34

2.7 更新本地文件資源 35

2.7.1 檢測配置漂移 39

2.7.2 terraform refresh 41

2.8 刪除本地文件資源 42

2.9 爐邊談話 44

小結 44

第3章 函數式編程 45

3.1 有趣的Mad Libs 46

3.1.1 輸入變量 47

3.1.2 使用變量定義文件賦值 48

3.1.3 驗證變量 49

3.1.4 打亂列表 49

3.1.5 函數 51

3.1.6 輸出值 52

3.1.7 模板 53

3.1.8 生成輸出結果 54

3.2 生成許多Mad Libs故事 55

3.2.1 for表達式 56

3.2.2 局部值 57

3.2.3 隱式依賴 58

3.2.4 count元實參 60

3.2.5 條件表達式 61

3.2.6 更多模板 62

3.2.7 本地文件 63

3.2.8 壓縮文件 64

3.2.9 應用修改 67

3.3 爐邊談話 68

小結 69

第4章 在AWS中部署多層Web應用程序 70

4.1 架構 71

4.2 Terraform模塊 73

4.2.1 模塊的語法 73

4.2.2 根模塊 74

4.2.3 標準模塊結構 74

4.3 根模塊 75

4.4 網絡模塊 78

4.5 數據庫模塊 82

4.5.1 從網絡模塊傳遞數據 83

4.5.2 生成隨機密碼 84

4.6 自動擴展模塊 86

4.6.1 下滴數據 86

4.6.2 模板化cloudinit_config 88

4.7 部署Web應用程序 92

4.8 爐邊談話 93

小結 94

第二部分 現實環境下的Terraform

第5章 簡單的無服務器部署 97

5.1 “兩美分網站” 98

5.2 架構和計劃 100

5.3 編寫代碼 104

5.3.1 資源組 105

5.3.2 存儲容器 106

5.3.3 存儲blob 107

5.3.4 Function應用 108

5.3.5 最終潤色 111

5.4 部署到Azure 114

5.5 將Azure資源管理器與Terraform結合起來 116

5.5.1 部署不支持的資源 116

5.5.2 從遺留代碼遷移 117

5.5.3 生成配置代碼 118

5.6 爐邊談話 119

小結 119

第6章 與朋友協同使用

Terraform 120

6.1 標準後端和增強後端 120

6.2 開發S3後端模塊 121

6.2.1 架構 122

6.2.2 扁平模塊 123

6.2.3 編寫代碼 124

6.3 共享模塊 130

6.3.1 GitHub 130

6.3.2 Terraform註冊表 131

6.4 每人一個S3後端 133

6.4.1 部署S3後端 133

6.4.2 在S3後端存儲狀態 135

6.5 在工作空間中復用配置代碼 138

6.5.1 部署多個環境 139

6.5.2 清理 142

6.6 Terraform Cloud簡介 143

6.7 爐邊談話 144

小結 144

第7章 CI/CD管道即代碼 145

7.1 兩個部署 146

7.2 GCP上的Docker容器的CI/CD 147

7.2.1 設計管道 147

7.2.2 施工設計 148

7.3 初始工作空間設置 149

7.4 動態配置和置備程序 151

7.4.1 for_each與count 152

7.4.2 使用置備程序執行腳本 153

7.4.3 帶有local-exec置備程序的null資源 155

7.4.4 處理重復的配置塊 156

7.4.5 動態塊 158

7.5 配置無服務器容器 160

7.6 部署靜態基礎設施 162

7.7 Docker容器的CI/CD 165

7.8 爐邊談話 168

小結 169

第8章 多雲MMORPG 170

8.1 混合雲負載均衡 171

8.1.1 架構概覽 172

8.1.2 代碼 174

8.1.3 部署 176

8.2 在Nomad集群聯邦上部署一個MMORPG 178

8.2.1 集群聯邦基礎 179

8.2.2 架構 179

8.2.3 階段1:靜態基礎設施 181

8.2.4 階段2:動態基礎設施 186

8.2.5 準備玩家1 189

8.3 使用托管服務重新設計MMORPG 190

8.3.1 代碼 191

8.3.2 準備玩家2 192

8.4 爐邊談話 193

小結 194

第三部分 精通Terraform

第9章 零停機時間部署 197

9.1 自定義生命周期 198

9.1.1 使用create_before_destroy實現零停機時間部署 198

9.1.2 其他考慮因素 200

9.2 藍/綠部署 201

9.2.1 架構 202

9.2.2 代碼 204

9.2.3 部署 204

9.2.4 藍/綠切換 206

9.2.5 其他考慮因素 207

9.3 配置管理 208

9.3.1 將Terraform和Ansible組合起來 208

9.3.2 代碼 209

9.3.3 基礎設施部署 215

9.3.4 應用程序部署 216

9.4 爐邊談話 218

小結 218

第 10章 測試和重構 220

10.1 置備自助基礎設施 221

10.1.1 架構 221

10.1.2 代碼 222

10.1.3 預部署 224

10.1.4 污染和輪轉訪問密鑰 225

10.2 重構Terraform配置 227

10.2.1 模塊化代碼 227

10.2.2 模塊展開 229

10.2.3 使用局部值替換多行字符串 231

10.2.4 循環多個模塊實例 233

10.2.5 新的IAM模塊 234

10.3 遷移Terraform狀態 236

10.3.1 狀態文件的結構 236

10.3.2 移動資源 237

10.3.3 重新部署 238

10.3.4 導入資源 239

10.4 測試基礎設施即代碼 242

10.4.1 編寫一個基本的Terraform測試 243

10.4.2 測試套件 245

10.4.3 運行測試 247

10.5 爐邊談話 247

小結 248

第 11章 通過編寫自定義提供程序擴展Terraform 249

11.1 Terraform提供程序的藍圖 250

11.1.1 Terraform提供程序的基礎知識 250

11.1.2 Pestore提供程序的架構 251

11.2 編寫Petstore提供程序 253

11.2.1 設置Go項目 253

11.2.2 配置提供程序模式 254

11.3 創建寵物資源 257

11.3.1 定義Create() 259

11.3.2 定義Read() 261

11.3.3 定義Update() 262

11.3.4 定義Delete() 263

11.4 編寫驗收測試 265

11.4.1 測試提供程序模式 265

11.4.2 測試寵物資源 266

11.5 生成、測試、部署 268

11.5.1 部署Petstore API 268

11.5.2 測試和生成提供程序 270

11.5.3 安裝提供程序 271

11.5.4 寵物即代碼 271

11.6 爐邊談話 275

小結 276

第 12章 自動化Terraform 277

12.1 仿造版的Terraform Enterprise 278

12.1.1 對Terraform Enterprise實施逆向工程 278

12.1.2 設計細節 280

12.2 從根級別開始 281

12.3 開發一個Terraform CI/CD管道 282

12.3.1 聲明輸入變量 282

12.3.2 IAM角色和策略 283

12.3.3 構建計劃和應用階段 286

12.3.4 配置環境變量 289

12.3.5 聲明管道即代碼 291

12.3.6 最終代碼 294

12.4 部署Terraform CI/CD 管道 297

12.4.1 創建源代碼倉庫 297

12.4.2 創建最小特權部署策略 298

12.4.3 配置Terraform變量 299

12.4.4 部署到AWS 299

12.4.5 連接到GitHub 301

12.5 使用管道部署“Hello World!” 301

12.6 爐邊談話 305

小結 306

第 13章 安全和密鑰管理 307

13.1 保護Terraform 狀態 308

13.1.1 從Terraform狀態刪除不必要的密鑰 308

13.1.2 使用最小特權訪問控制 312

13.1.3 靜態加密 313

13.2 保護日誌 314

13.2.1 哪些敏感信息會被泄露 315

13.2.2 local-exec置備程序的危險 317

13.2.3 外部數據源的危險 317

13.2.4 HTTP提供程序的危險 319

13.2.5 限制日誌訪問 320

13.3 管理靜態密鑰 320

13.3.1 環境變量 320

13.3.2 Terraform變量 322

13.3.3 重定向敏感的Terraform 變量 324

13.4 使用動態密鑰 325

13.4.1 HashiCorp Vault 326

13.4.2 AWS Secrets Manager 327

13.5 Sentinel和策略即代碼 328

13.5.1 編寫一個基本的Sentinel策略 329

13.5.2 阻塞local-exec置備程序 330

13.6 結語 331

小結 331

附錄A AWS身份驗證 333

附錄B Azure身份驗證 335

附錄C GCP身份驗證 337

附錄D 使用Shell提供程序

創建自定義資源 339

附錄E 創建Petstore

數據源 344