金魚哥說Ansible:第一章 介紹Ansible
第一章 介紹ansible
1.1 一切皆自動化
“運維的未來是,讓研發人員能夠借助工具、自動化和流程,并且讓他們能夠在運維干預極少的情況下部署和運營服務,從而實現自助服務。每個角色都應該努力使工作實現自動化。”——《運維的未來》
1.2 前言
公司的服務器越來越多, 維護一些簡單的事情都會變得很繁瑣。用shell腳本來管理少量服務器效率還行, 服務器多了之后, shell腳本無法實現高效率運維。這種情況下,我們需要引入自動化運維工具, 對多臺服務器實現高效運維。
場景:
假設我要去1000臺服務上做一個操作(如nginx服務器修改配置文件里的某一個參數), 下面兩種方法缺點明顯:
傳統的方法, 手工去裝:ssh到每臺服務器上去手動操作。
缺點:
效率太低。
容器出錯。
寫個shell腳本來做。
缺點:
管理的機器平臺不一致,腳本可能不具備通用性。
傳密碼麻煩(在非免密登錄的環境下, 需要expect來傳密碼)
效率較低,循環1000次也需要一個一個的完成,如果用&符放到后臺執行,則會產生1000個進程。
如果出了錯誤,需要自己手工去收集信息然后解決,腳本更新了以后又要重新下載一遍去執行,不方便而且效率低。
有沒有一種工具,能把任務批量給主機去執行,然后還能收集執行過程中的具體信息?
1.3 常見的開源自動化運維工具比較
基于python語言,Agentless,中小型應用環境。簡單快捷,被管理端不需要啟服務。直接走ssh協議,需要驗證所以機器多的話速度會較慢。
puppet
基于ruby語言,功能強大,成熟穩定,配置復雜、重型,適合于大型架構。
saltstack
基于python語言,一般需部署agent,執行效率更高;相對簡單,大并發能力比ansible要好, 需要維護被管理端的服務。如果服務斷開,連接就會出問題。
Fabric:python,agentless。
Chef:ruby,國內應用少。
同類自動化工具GitHub關注程度(2016-07-10)
ansible集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
1.4 自動化運維應用場景
文件傳輸
應用部署
配置管理
任務流編排
自動化運維: 將日常IT運維中大量的重復性工作,小到簡單的日常檢查、配置變更和軟件安裝,大到整個變更流程的組織調度,由過去的手工執行轉為自動化操作,從而減少乃至消除運維中的延遲,實現“零延時”的IT運維。
1.5 Ansible發展史
ansible 的名稱來自科幻小說《安德的游戲》中跨越時空的即時通信工具,使用它可以在相距數光年的
距離,遠程實時控制前線的艦隊戰斗。
2012-03-09,發布0.0.1版,2015-10-17,Red Hat 宣布1.5億美元收購。
官網: https://www.ansible.com/
官方文檔: https://docs.ansible.com/
1.6 Ansible 是什么
Ansible 簡單的說是一個配置管理系統(configuration management system)。你只需要可以使用 ssh 訪問你的服務器或設備就行。它也不同于其他工具,因為它使用推送的方式,而不是像 puppet 等 那樣使用拉取安裝agent的方式。你可以將代碼部署到任意數量的服務器上!
1.7 Ansible特性
模塊化:調用特定的模塊,完成特定任務
有Paramiko,PyYAML,Jinja2(模板語言)三個關鍵模塊
支持自定義模塊
基于Python語言實現
部署簡單,基于python和SSH(默認已安裝),agentless
安全,基于OpenSSH
支持playbook編排任務
冪等性:一個任務執行1遍和執行n遍效果一樣,不因重復執行帶來意外情況
無需代理不依賴PKI(無需ssl)
可使用任何編程語言寫模塊
YAML格式,編排任務,支持豐富的數據結構
較強大的多層解決方案
1.8 Ansible架構
Ansible主要組成部分功能說明
PLAYBOOKS: 任務劇本(任務集),編排定義Ansible任務集的配置文件,由Ansible順序依次執行,通常是JSON格式的YML文件。
INVENTORY: Ansible管理主機的清單/etc/anaible/hosts 。
MODULES: Ansible執行命令的功能模塊,多數為內置的核心模塊,也可自定義,ansible-doc –l 可查看模塊
PLUGINS: 模塊功能的補充,如連接類型插件、循環插件、變量插件、過濾插件等,該功能不常用。
API: 供第三方程序調用的應用程序編程接口。
ANSIBLE: 組合INVENTORY、 API、 MODULES、PLUGINS的綠框,可以理解為是ansible命令工具,其為核心執行工具。
1.9 安裝Ansible
現時最新的版本為 4,但若是紅帽系列使用者,建議使用 2.9的版本。
實驗過程
此操作在 RHEL 或 CentOS上執行。
yum安裝ansible需要配置好 epel源 或 可用的 Ansible Engine倉庫。
# yum install epel-release 可配置國內EPEL源
# yum -y install ansible
# ansible --version ansible 2.9.23 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/site-packages/ansible executable location = /usr/bin/ansible python version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
注意事項
執行ansible的主機一般稱為主控端,中控,master
ansible2.9主控端Python版本需要2.7或3.5以上
ansible2.9被控端Python版本需要2.6或3.5以上
被控端Python版本小于2.4需要安裝python-simplejson
被控端如開啟SELinux需要安裝libselinux-python
windows不能做為主控端
官網地址:
https://docs.ansible.com/ansible/2.9/installation_guide/intro_installation.html#installing-ansible-on-rhel-centos-or-fedora
可查看不同版本的情況和python版本的最低要求,也可查看各平臺上的安裝方法
身為一名技術人員,要學會如何在官網查看資料以幫助自己了解這門服務的部署與使用。
Linux 運維
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。