如今作運維的估計都對ansible不陌生了,若是尚未使用過的,我建議儘快嘗試下這個技術,入門很是簡單,一旦你運用熟練,將大大減輕運維工做的壓力,ansible只須要在主控端安裝,客戶端無需作任何操做便可對被控端進行批量操做,這也是相對於saltstack的一個優勢,saltstack除了在主控端安裝外,客戶機要安裝客戶端,其它很少說了,若是有興趣的能夠百度,這種文章已經滿大街都是了,回到正題,今天這篇咱們仍是主要來介紹介紹ansible若是在運維中的應用,原本我剛開始打算用一篇來完成對ansible的介紹,在實際寫的過程當中才發現,若是隻用一篇來寫,那篇幅就會非很是的長,爲了讓你們閱讀起來不那麼痛苦,我最後決定分三篇來寫完,三篇分別介紹ansible的經常使用模塊,而後講解playbook配置,最後介紹ansible的api,這篇是開頭篇,因此暫不涉及python的編碼工做,學習起來也比較輕鬆,廢話很少說了,咱們接下來開始咱們的正題:python
首先,咱們安裝ansibleweb
#yum install ansibleshell
而後輸入個Y,就完成了,就是這麼簡單。json
安裝完,咱們說下基本的配置,運行命令:centos
#cd /etc/ansible/api
#llapp
總用量 20運維
-rw-r--r-- 1 root root 8625 10月 11 02:41 ansible.cfgssh
-rw-r--r-- 1 root root 979 3月 1 23:13 hostside
drwxr-xr-x 2 root root 4096 10月 11 02:41 roles
咱們看到有2個文件和1個目錄,,其它先不用管,咱們先只看hosts文件,用vi打開,除[webservers],[dbservers]這兩行外,其它所有註釋掉,這二行的做用的定義主機組,主機組名下能夠寫成員主機的IP(或域名),咱們能夠把的客戶機的IP放到[webservers]主機組下,這樣,定義主機和組的規則就算完成了,接下來進入咱們模塊學習部分。
不得不說ansible的模塊真是豐富,基本上咱們平常運維用到功能所有都有了,運行命令
#ansible-doc -l
能夠看到所有的模塊名稱,對模塊的使用仍是要看業務場景,好比你若是沒有在aws上機器,那麼像ec2你也不會用到,因此今天咱們就只會對平常運維最經常使用的模塊作說明,剩餘的模塊能夠根據本身的業務用到了,再去學習瞭解,咱們在講模塊前,會先給出每一個模塊的應用場景,方便你們快速上手使用:
場景1:須要在客戶機上執行命令,能夠用command模塊,命令以下:
#ansible webservers -m command -a 'uptime'
其中webservers是主機組名稱,在該主機組名稱下的全部主機都會運行uptime命令,-m後是模塊名稱,-a 後是模塊參數,後續命令都基本一個模子,再也不贅述。
場景2:須要執行客戶機上的腳本,能夠用shell模塊,命令以下:
#ansible webservers -m shell -a '/root/run.sh'
場景三:腳步在主控端,但須要在客戶機上執行,能夠用script模塊,命令以下:
#ansible webservers -m shell -a '/root/local.sh'
請注意,你主控端/root/下必須有local.sh腳本。
場景四:文件發佈,這種需求不少,好比平常的配置文件更新,程序版本發佈等,基本都會用到,能夠用copy模塊:
#ansible webservers -m copy -a 'dest=/root/ src=/root/xl2pdf'
注意我這裏xl2pdf是個目錄。
場景5:想在客戶機上安裝軟件,能夠用yum模塊,這個用的仍是挺多的,好比用ansible去連接低版本的centos時,就乎出現」ansible requires a json module, none found! 「的錯誤,須要遠程機安裝samplejson包。
ansible webservers -m raw -a 'yum -y install python-simplejson'
raw是什麼鳥?莫急,咱們看看幫助文檔怎麼說:#ansible-doc raw
> RAW
Executes a low-down and dirty SSH command, not going through the
module subsystem............
第一句就說明了問題,raw模塊是靠底層ssh的通信,不依靠python的模塊,因此若是碰到低版本的系統,若是command和shell模塊沒法使用,能夠先用這條命令安裝完須要的包。
場景6:重啓客戶機服務,能夠用service模塊:
#ansible webserves -m service -a "name=vsftpd state=restarted"
對服務操做有started,stopped,restarted,reloaded四個參數。
以上主要的模塊就說完了,還有ping模塊,setup模塊(獲取遠程主機信息),cron模塊等你們能夠按以上模塊使用的思路去參考運行,不知道怎麼使用的,就看看幫助文檔,這篇就到這裏了,下篇咱們開始聊聊如何將這些模塊組合起來知足更復雜的業務操做,這就要用到咱們的playbook了,先很少說,咱們下篇見。