第一章主要講的是 Ansible 架構及特色,主要包含如下內容:nginx
Ansible 的編排引擎能夠完成配置管理、流程控制、資源部署等工做。 Ansible 基於 Python語言實現,由 Paramiko 和 PyYAML 兩個關鍵模塊構建。web
Ansible 維護模式一般由控制機和被管機組成。控制機是用來安裝 Ansible 工具軟件、執行維護指令的服務器或工做站,是 Ansible 維護的核心。被管機是運行業務服務的服務器,由控制機經過SSH來進行管理。編程
Ansible 是一個模型驅動的配置管理器,支持多節點發布、遠程任務執行。默認使用SSH進行遠程鏈接。無需再被管節點上安裝附加軟件,可以使用各類編程語言進行擴展。ubuntu
Ansible 管理系統由控制主機和一組被管節點組成。控制主機直接經過SSH控制被管節點,被管節點經過 Ansible 的資源清單來進行分組管理。
安全
編寫 webservers.yml 的 Ansible 腳本,即 playbook ,其中包含被管節點的 hosts 和對這些 hosts 按照順序執行的任務列表(task)。服務器
hosts 包括web一、web二、web3。架構
任務列表包括以下過程:運維
在 Ansible 系統的控制主機上執行ansible-playbook webservers.yml
,Ansible 將會經過 SSH 鏈接並行地在web一、web二、web3上面安裝、配置、運行 Nginx 服務。編程語言
Ansible 採用 paramiko 協議庫,經過 SSH 或 ZeroMQ 等鏈接主機。Ansible 在控制主機將 Ansible 模塊經過 SSH協議推送到被管節點執行,執行完自動刪除。控制主機與被管節點之間支持 local、SSH、ZeroMQ 三種鏈接方式,默認使用基於 SSH 鏈接,在大規模狀況下,使用 ZeroMQ 鏈接方式執行速度更快。工具
Ansible 系統由控制主機對被管節點的操做方式可分爲兩類,即 ad-hoc 和 playbook。
Ansible 是基於一致性、安全性、高可靠性設計的輕量級自動化工具,具備功能強大、部署便捷、描述清晰等特性,很好地解決了統一配置、統一部署、流程編排等複雜的 IT 自動化管理問題。
項目 | Puppet | SaltStack | Ansible |
---|---|---|---|
開發語言 | Ruby | Python | Python |
是否有客戶端 | 有 | 有 | 無 |
是否支持二次開發 | 不支持 | 支持 | 支持 |
服務器與遠程機器通訊協議 | 標準 SSL 協議 | 使用AES加密 | 使用 OpenSSH |
配置文件格式 | Ruby語法格式 | YAML | YAML |
與其餘自動化工具比較,Ansible 不須要安裝客戶端就能夠輕鬆地管理、配置。
Ansible 的關鍵想法是計算機是一組,而不是一個個分開的機器,即「多層編排」的思想。避免了證書交換,以及反向解析 DNS 和 NTP 的問題。YAML的配置文件格式,簡單易用。