1. 程式人生 > >《Ansible自動化運維:技術與佳實踐》第一章讀書筆記

《Ansible自動化運維:技術與佳實踐》第一章讀書筆記

Ansible 架構及特點

第一章主要講的是 Ansible 架構及特點,主要包含以下內容:

  1. Ansible 軟體
  2. Ansible 架構模式
  3. Ansible 特性

Ansible 軟體

Ansible 的編排引擎可以完成配置管理、流程控制、資源部署等工作。 Ansible 基於 Python語言實現,由 Paramiko 和 PyYAML 兩個關鍵模組構建。

Ansible 應用領域

  1. 配置管理
  2. 服務即時開通
  3. 應用部署
  4. 流程編排
  5. 監控告警
  6. 日誌記錄

Ansible 架構模式

Ansible 維護模式通常由控制機和被管機組成。控制機是用來安裝 Ansible 工具軟體、執行維護指令的伺服器或工作站,是 Ansible 維護的核心。被管機是執行業務服務的伺服器,由控制機通過SSH來進行管理。

Ansible 管理方式

Ansible 是一個模型驅動的配置管理器,支援多節點發布、遠端任務執行。預設使用SSH進行遠端連線。無需再被管節點上安裝附加軟體,可使用各種程式語言進行擴充套件。

Ansible 管理系統由控制主機和一組被管節點組成。控制主機直接通過SSH控制被管節點,被管節點通過 Ansible 的資源清單來進行分組管理。

Ansible 用劇本方式對3臺執行 Nginx 服務的 Ubuntu 伺服器進行配置管理

編寫 webservers.yml 的 Ansible 指令碼,即 playbook ,其中包含被管節點的 hosts 和對這些 hosts 按照順序執行的任務列表(task)。

hosts 包括web1、web2、web3。

任務列表包括如下過程:

  • 安裝 Nginx(Install Nginx)
  • 建立 Nginx 配置檔案(/etc/nginx/nginx.conf)
  • 基於安全證書SSH方式拷貝配置檔案,重啟 Nginx 服務
  • 確保 Nginx 服務處於啟動狀態

在 Ansible 系統的控制主機上執行ansible-playbook webservers.yml,Ansible 將會通過 SSH 連線並行地在web1、web2、web3上面安裝、配置、執行 Nginx 服務。

Ansible 系統架構

  • 核心引擎:即 Ansible。
  • 核心模組(core modules):Ansible 模組資源分發到遠端節點使其執行特定任務或匹配一個特定的狀態。
  • 自定義模組(custom modules)
  • 外掛(plugins):模組功能的補充,藉助外掛完成記錄日誌、郵件等功能。
  • 劇本(playbook):定義 Ansible 任務的配置檔案,可將多個任務定義在一個劇本中,由 Ansible 自動執行,可由控制主機執行多個任務,同時對多臺遠端主機進行管理。
  • 連線外掛(connectior plugins):Ansible 基於連線外掛連線到各個主機,負責和被管節點實現通訊。因為支援除SSH連線方法外的其他連線方法,所以需要連線外掛。
  • 主機清單(host inventory):定義 Ansible 管理的主機策略。

Ansible 採用 paramiko 協議庫,通過 SSH 或 ZeroMQ 等連線主機。Ansible 在控制主機將 Ansible 模組通過 SSH協議推送到被管節點執行,執行完自動刪除。控制主機與被管節點之間支援 local、SSH、ZeroMQ 三種連線方式,預設使用基於 SSH 連線,在大規模情況下,使用 ZeroMQ 連線方式執行速度更快。

任務執行模式

Ansible 系統由控制主機對被管節點的操作方式可分為兩類,即 ad-hoc 和 playbook。

  • ad-hoc 模式使用單個模組,支援批量執行單條命令。
  • playbook 模式是 Ansible 主要管理方式,playbook 通過多個 task 集合完成一類功能。(可以把 playbook 理解為通過組合多條ad-hoc 操作的配置檔案)

Ansible 特性

Ansible 是基於一致性、安全性、高可靠性設計的輕量級自動化工具,具有功能強大、部署便捷、描述清晰等特性,很好地解決了統一配置、統一部署、流程編排等複雜的 IT 自動化管理問題。

Ansible 功能特性

  1. 語法簡單、易讀
  2. 不需要再被管節點安裝客戶端軟體
  3. 基於推送(Push)方式
  4. 方便管理小規模場景
  5. 大量內建模組
  6. 非常輕量級的抽象層

Ansible 與其他配置管理的對比

專案 Puppet SaltStack Ansible
開發語言 Ruby Python Python
是否有客戶端
是否支援二次開發 不支援 支援 支援
伺服器與遠端機器通訊協議 標準 SSL 協議 使用AES加密 使用 OpenSSH
配置檔案格式 Ruby語法格式 YAML YAML

與其他自動化工具比較,Ansible 不需要安裝客戶端就可以輕鬆地管理、配置。

總結

Ansible 的關鍵想法是計算機是一組,而不是一個個分開的機器,即“多層編排”的思想。避免了證書交換,以及反向解析 DNS 和 NTP 的問題。YAML的配置檔案格式,簡單易用