1. 程式人生 > >Ansible--原理部分

Ansible--原理部分

什麼是Ansible

Ansible是一種IT自動化運維工具,它可以配置系統,部署軟體以及協調更高階的IT任務,例如持續部署或者是零停機滾動更新
Ansible是新出現的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程式部署、批量執行命令等功能。
Ansible是基於模組工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所執行的模組,ansible只是提供一種框架。
Ansible的主要目的是簡單易用,它還非常注重安全性很可靠性,具有最少的移動部件,使用OPenSSH進行傳輸(使用其他的傳輸和拉取模式作為代替方案)


Ansible以無代理方式管理機器。永遠不會出現如何升級遠端守護程序或無法管理系統的問題,因為解除安裝了守護程序。由於OpenSSH是最受同行評審的開源元件之一,因此安全風險大大降低
Ansible是分散式的 - 它依賴於您現有的操作系​​統憑據來控制對遠端計算機的訪問。如果需要,Ansible可以輕鬆連線Kerberos,LDAP和其他集中式身份驗證管理系統

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工具呼叫各應用模組指令推送到被管理端執行,並在執行完畢後自動刪除產生的臨時檔案

工作機制圖說明:

CMDB:                  配置管理資料庫(使用Ansible的一種方式)
USERS:                 管理使用者(使用Ansible的人員)
ANSIBLE PLAYBOOK:      Ansible任務劇本(任務集)
INVERTORY:             被管理的主機清單
API:                   供第三方程式呼叫的應用程式程式設計介面
MODULES:                AnsIble使用的模組(內建模組,自定義模組)
PLUGINS:                Ansbile使用的外掛(模組功能的補充方式,這裡包括很多的外掛)
HOSTS:                  被控端主機
NETWORKING:             被控端網路裝置(交換機,路由器等)

 Ansbile主要的組成部分:

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安裝

更加刺激的安裝教程請點選:https://www.cnblogs.com/brianzhu/p/10163899.html