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

Ansible 架構及特色

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

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

Ansible 軟件

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

Ansible 應用領域

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

Ansible 架構模式

Ansible 維護模式一般由控制機和被管機組成。控制機是用來安裝 Ansible 工具軟件、執行維護指令的服務器或工做站,是 Ansible 維護的核心。被管機是運行業務服務的服務器,由控制機經過SSH來進行管理。編程

Ansible 管理方式

Ansible 是一個模型驅動的配置管理器,支持多節點發布、遠程任務執行。默認使用SSH進行遠程鏈接。無需再被管節點上安裝附加軟件,可以使用各類編程語言進行擴展。ubuntu

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

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

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

hosts 包括web一、web二、web3。架構

任務列表包括以下過程:運維

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

在 Ansible 系統的控制主機上執行ansible-playbook webservers.yml,Ansible 將會經過 SSH 鏈接並行地在web一、web二、web3上面安裝、配置、運行 Nginx 服務。編程語言

"運行 Ansible 的 playbook 對 3 臺 Web 服務器進行配置"

Ansible 系統架構

"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 特性

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 自動化運維方式"

總結

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

相關文章
相關標籤/搜索