1. 程式人生 > >運維自動化 Ansible

運維自動化 Ansible

是什麼

Ansible簡單的說是一個配置管理系統(configuration management system)。你只需要可以使用ssh訪問你的伺服器或裝置就行,它也不同於其他工具,因為它使用推送的方式,而不是像puppet等那樣使用拉取安裝agent的方式。

能做什麼

ansible可以幫助我們完成一些批量任務,或者完成一些需要經常重複的工作。

比如:同時在100臺伺服器上安裝nginx服務,並在安裝後啟動它們。

比如:將某個檔案一次性拷貝到100臺伺服器。

比如:每當有新伺服器加入工作環境時,你都要為新伺服器部署某個服務,也就是說你需要經常重複的完成相同的工作。

特性

 模組化:呼叫特定的模組,完成特定任務
 有Paramiko,PyYAML,Jinja2(模板語言)三個關鍵模組
 支援自定義模組
 基於Python語言實現
 部署簡單,基於python和SSH(預設已安裝),agentless
 安全,基於OpenSSH
 支援playbook編排任務
 冪等性:一個任務執行1遍和執行n遍效果一樣,不因重複執行帶來意外情況
 無需代理不依賴PKI(無需ssl)
 可使用任何程式語言寫模組
 YAML格式,編排任務,支援豐富的資料結構
 較強大的多層解決方案

架構

主要組成部分

1、playbooks

任務劇本(任務集),編排定義Ansible任務集的配置檔案,由Ansible順序依次執行,通常是JSON格式的YAML檔案。

2、Inventory

Ansible管理主機的清單/etc/ansible/hosts

3、modules

ansible執行命令的功能模組,多數為內建的核心模組,也可以自定義,ansible-doc -l可檢視模組。

4、plugins

模組功能的補充,如連線型別外掛、迴圈外掛、變數外掛、過濾外掛等

5、API

供第三方程式呼叫的應用程式程式設計介面

6、ansible

ansible命令工具,其為核心執行工具。

 

 

參考:http://blog.51cto.com/191226139/2066936