什麼是Ansible
Ansible是一種IT自動化運維工具,它能夠配置系統,部署軟件以及協調更高級的IT任務,例如持續部署或者是零停機滾動更新
Ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優勢,實現了批量系統配置、批量程序部署、批量運行命令等功能。
Ansible是基於模塊工做的,自己沒有批量部署的能力。真正具備批量部署的是ansible所運行的模塊,ansible只是提供一種框架。
Ansible的主要目的是簡單易用,它還很是注重安全性很可靠性,具備最少的移動部件,使用OPenSSH進行傳輸(使用其餘的傳輸和拉取模式做爲代替方案)
Ansible以無代理方式管理機器。永遠不會出現如何升級遠程守護進程或沒法管理系統的問題,由於卸載了守護進程。因爲OpenSSH是最受同行評審的開源組件之一,所以安全風險大大下降
Ansible是分散式的 - 它依賴於您現有的操做系統憑據來控制對遠程計算機的訪問。若是須要,Ansible能夠輕鬆鏈接Kerberos,LDAP和其餘集中式身份驗證管理系統html
Ansible架構
架構圖說明: 數據庫
public/private cloud: 公有云私有云 Users: 管理用戶(使用Ansible的人員) Ansible: Ansible軟件 Host invertory: 被管理的主機清單 Playbooks: Ansible編排工具 Core Modules: Ansbile 核心模塊 Custom Modules: Ansible 自定義模塊 Plugins: 其餘插件(經過插件來記錄日誌) Connection Plugins: 鏈接插件(使用此插件鏈接被控端) Host1..HostN: 被控端主機
Ansible工做機制
舒適提示:編程
Ansible沒有客戶端,所以底層通訊依賴於系統軟件,Linux系統下是基於OPenSSH通訊,windows系統下是基於PowerShell,管理端必須是Linux,使用者認證經過後在管理節點經過Ansible工具調用各應用模塊指令推送到被管理端執行,並在執行完畢後自動刪除產生的臨時文件
工做機制圖說明:windows
CMDB: 配置管理數據庫(使用Ansible的一種方式) USERS: 管理用戶(使用Ansible的人員) ANSIBLE PLAYBOOK: Ansible任務劇本(任務集) INVERTORY: 被管理的主機清單 API: 供第三方程序調用的應用程序編程接口 MODULES: AnsIble使用的模塊(內置模塊,自定義模塊) PLUGINS: Ansbile使用的插件(模塊功能的補充方式,這裏包括不少的插件) HOSTS: 被控端主機 NETWORKING: 被控端網絡設備(交換機,路由器等)
Ansbile主要的組成部分:api
ANSIBLE PLAYBOOK: Ansible任務劇本(任務集),編排定義Ansible任務集的配置文件,由Ansible順序依次執行,一般是JSON格式的YML文件 INVENTORY: 被管理的主機清單(在/etc/ansbile/hosts文件中) MODULES: AnsIble使用的模塊(內置模塊,自定義模塊) PLUGINS: Ansbile使用的插件(模塊功能的補充方式,如鏈接類型插件,循環插件,變量插件,過濾插件等)這個功能不多使用 API: 供第三方程序調用的應用程序編程接口 ANSIBLE: 組合inventory,api,modules,plugins的綠框,能夠理解爲是ansible命令工具,其爲核心的執行工具
Ansible特性
1) 模塊化:調用特定的模塊,完成特定的任務
2) 有Parmiko,PyYAML,Jinjia2(模板語言)三個關鍵模塊
3) 支持自定義模塊
4) 基於Python語言開發(可對其進行二次開發)
5) 部署簡單,基於Python和SSH(默認以安裝)
6) agentless(被控端無需安裝Agent)
7) 安全,基於OPenSSH
8) 支持playbook編排任務
9) 冪等性:一個任務執行一遍和執行N遍效果同樣,不會由於重複執行帶來意外錯誤
10) 可使用任何的編程語言寫模塊
11) YAML格式,編排任務,支持豐富的數據結構
12) 較強大的多層解決方案(多層概念:多個playbook的集合)安全
Ansible安裝
更加刺激的安裝教程請點擊:http://www.javashuo.com/article/p-gkhdgxhp-hp.htmlbash