Ansible--原理

什麼是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

相關文章
相關標籤/搜索