運維自動化 Ansible
阿新 • • 發佈:2019-01-04
是什麼
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命令工具,其為核心執行工具。