帶你揭開運(yùn)維自動(dòng)化的面紗:Ansible業(yè)務(wù)自動(dòng)化之路
1.作者介紹
2008年開始接觸linux,之后一起從事linux相關(guān)工作,先后就職于上海woyo、騰訊、匯聯(lián)、諾亞等企業(yè),馬哥教育特約講師。
2.主題介紹
30分鐘帶你揭開運(yùn)維自動(dòng)化的面紗-Ansible業(yè)務(wù)自動(dòng)化之路
難度指數(shù):2星(滿星5星)
技術(shù)指數(shù):4星(滿星5星)
理論指數(shù):3星(滿星5星)
面向人群:運(yùn)維~技術(shù)流
本次分享重點(diǎn):跨“種族”業(yè)務(wù)發(fā)布自動(dòng)化之路
其中:練就18式,拿下自動(dòng)化。時(shí)間關(guān)系本次不做重點(diǎn)講解,后續(xù)會(huì)做為系列分享進(jìn)行。
3.分享內(nèi)容
第一章、情定Ansible
和談男女朋友一樣,如果不對眼再漂亮的對象也白搭,如果相互不了解,再牛也有被當(dāng)成是拍黃片(PHP)的時(shí)候。
我選擇PHP的原因,sorry,我選擇Ansible的原因有如下幾個(gè)方面:
1.去中心化
作為 Ansible 發(fā)展至今的核心優(yōu)勢極具競爭力,最大的優(yōu)勢是人人皆可成為三軍將領(lǐng),遷移非常方便,要求也很簡單,python 2.6+、pip/yum/apt簡單的幾條命令即可全盤搞定。據(jù)稱該特性也會(huì)一直堅(jiān)持下去,不確認(rèn)是不是基于這個(gè)原因紅帽才下決心收購了Ansible 呢(個(gè)人推斷也是“輕”的緣故)。無論如何作為一個(gè)新秀,如此成績實(shí)在驚為天人。
2.簡單
和saltstack/puppet不同,不用class等高級語法即可滿足業(yè)務(wù)日常所需;雖然devops是新一代運(yùn)維必備,但萬丈高樓平地起,devops也非簡單幾日就能信手拈來。
和fabric不同,無需懂python任何語種即可快速上手掌握;好吧!也不得不承認(rèn) fabric 是開發(fā)同時(shí)的最愛,幾行簡單的代碼無需改變習(xí)慣就能完成心中所想,但應(yīng)對項(xiàng)目日趨復(fù)雜,對開發(fā)能力要求也不斷提高,且維護(hù)成本指數(shù)增加。
最后,用官方原話形容Ansible簡單的特性:Stupid simple。
3.友情搜索
眾所周知,未來是關(guān)系搜索的時(shí)代。身邊朋友的實(shí)踐體驗(yàn)也是極為重要。想到saltstack,puppet不停反饋出來的問題,心中也是略有陰影,當(dāng)然也不排除Ansible問題還沒有暴露出來的可能。
4.“大勢所趨”
想想XEN,KVM,有了奶媽的支持,高低立顯。繼Ansible之前自動(dòng)化工具雖如雨后春筍,但未來還不一定“鹿死誰手”。
更多:
對比參見 黃博文 http://www.cnblogs.com/huang0925/p/4664608.html
ok!Ansible的基礎(chǔ)介紹到此結(jié)束。
#p#
第二章:跨”種族”業(yè)務(wù)發(fā)布自動(dòng)化之路
開始之前,先為小白們普及下發(fā)布流程?! ?/p>
如圖為簡單的發(fā)布流程,其中涉及到運(yùn)維操作的有8步。相對腳本化,Ansible更多程度上:1.降低了上手難度;2.保障了自動(dòng)化質(zhì)量;3.健壯了可擴(kuò)展性。
舉個(gè)例子:
PHP/Java項(xiàng)目的發(fā)布就底層而言有非常大的不同和實(shí)現(xiàn)機(jī)制,同時(shí)由于開發(fā)同學(xué)多樣化需求,針對多套環(huán)境如何保障運(yùn)維發(fā)布操作單一化、簡單 化,Ansible的實(shí)現(xiàn)方式非常針對性的考驗(yàn)運(yùn)維同學(xué)思維深度和全面性。Ansible在設(shè)計(jì)之初側(cè)面幫了運(yùn)維同學(xué)不少忙,你會(huì)發(fā)現(xiàn)在運(yùn)用的過程中會(huì)不 自主的靠著Ansible的“規(guī)則”來,當(dāng)然這些規(guī)則對運(yùn)維架構(gòu)框架是有利的。下面的例子簡單來分析看看:
如圖為我們當(dāng)前業(yè)務(wù)的發(fā)布方式,現(xiàn)在還處于腳本自動(dòng)化階段,比較lower。
化零為整
Ansible一次完整的發(fā)布可以非常靈活的按模塊拆分,場景:
針對測試環(huán)境不希望人工參與的背景下:化零為整,一鍵部署。
化整為零
針對正式生產(chǎn)環(huán)境操作繁多變更不定的背景下:化整為零
Ansible的模塊化 & tags 功能輕松駕馭
有朋友當(dāng)然會(huì)反問,上面我寫個(gè)腳本輕松搞定。
確實(shí),我們后面會(huì)講到,請稍安勿躁!
運(yùn)維同學(xué)SHELL腳本是必備技能,相比較devops而言,SHELL腳本的學(xué)習(xí)成本和上手難度幾乎為零。再回頭看Ansible的發(fā)布方式,結(jié)合SHELL腳本的參數(shù)調(diào)用,有沒有覺得似曾相識(shí),改變一個(gè)人的習(xí)慣何其難,所以Ansible playbook簡單是運(yùn)維的福音。
Yml語法清晰明了,規(guī)則簡單,99%的功能都是一行命令即可實(shí)現(xiàn)。Ansible自帶冥等判斷機(jī)制也省去運(yùn)維不省邏輯判斷傷腦費(fèi)心的人腦運(yùn)算。
寫playbook的過程就是一個(gè)思維整理的過程。
太過復(fù)雜的思維在寫的過程中會(huì)無意中被簡化。
好的,上面的內(nèi)容大家可以先消化1min。
第三章: 不同“種族”業(yè)務(wù)Ansible的處理方式
以PHP/JAVA多項(xiàng)目為例,有如ppt所示問題:
公司現(xiàn)有PHP項(xiàng)目近10個(gè),JAVA項(xiàng)目也納入運(yùn)維管理,后期也可能不斷融入新項(xiàng)目,如何保證1.現(xiàn)有操作習(xí)慣不變改變;2. 簡單一致的發(fā)布操作。
越來越具挑戰(zhàn)。
起初希望通過git命名規(guī)范來實(shí)現(xiàn)簡化發(fā)布操作,但隨之發(fā)現(xiàn)不可能,原因如下:1.影響合作部門已有工作習(xí)慣;2.約束力太多阻力也在不斷加大;3.溝通成本大;4.非核心功能開發(fā)支持力度不及自力更生來的快。
最終方案:
多一層判斷和roles模塊,通過git的變量名來定義git拉取地址。
這個(gè)用ansible來實(shí)現(xiàn)簡單是易如反掌。
如此以來php,java均可在最大化不更改運(yùn)維操作習(xí)慣的前提下完成業(yè)務(wù)的(工具)自動(dòng)化發(fā)布。
優(yōu)點(diǎn):
◆溝通成本小
◆約束點(diǎn)少
缺點(diǎn):
◆冗余模塊變多
◆運(yùn)維維護(hù)成本大,復(fù)雜程度增加。
◆來簡單對比下代碼差異化程度。
可以看出差異化地方只在執(zhí)行的服務(wù)器和進(jìn)程管理的各類。
#p#
再來看看代碼量。
第四章:練就18式,拿下自動(dòng)化
基礎(chǔ)模塊13式
作為基礎(chǔ)模塊,熟悉掌握即能完全駕馭ansible日常工作90%自動(dòng)化工作,簡單指數(shù)5星。
輔助模塊5式
擁備基礎(chǔ)模塊,同時(shí)配合輔助模塊可使已有成果更上一層樓,簡單指數(shù) 4星。
第四章:AnsibleUi -jumpserver
話說自動(dòng)化怎么能停留在工具時(shí)代,但 tower 又收費(fèi),如何破?
jumpserver 完全開源的,堡壘機(jī)功能日趨完善,自動(dòng)化發(fā)布平臺(tái)底層也基于 Ansible 實(shí)現(xiàn),更多精彩可參考http://jumpserver.org/ 。
最新功能:
第五章:后記分享目錄
分享目錄及方式參考
參考http://www.178linux.com/doc/ansible/翻譯的內(nèi)容按功能模塊結(jié)合業(yè)務(wù)實(shí)踐以場景化方式逐一講解。
問題反饋路徑 http://www.178linux.com/qa/重復(fù)收看 http://www.osstep.com。
群友Q/A
問題1:發(fā)布為啥是用ansible去打包的?
最小化最簡化原則,運(yùn)維需要懂的工具很多,需要熟練不會(huì)太多,精一通百的人畢竟少數(shù),精力也是有限,就如用阿里云,ucloud就推薦使用他們的“四大件”。
問題2:ansible在上千機(jī)器的集群中有沒有瓶頸?
這個(gè)我如實(shí)回答,我知道的還沒有。數(shù)百臺(tái)的應(yīng)用是有的。但我覺得RedHat都不擔(dān)心這個(gè)問題,我們更不需要擔(dān)心,看看kvm,docker的發(fā)展就是指導(dǎo)。
問題3:ansible在win上只支持nt不支持2003 如何解決?
A:只能說是所有開源軟件的通病,windows閉源已經(jīng)深知其中的痛點(diǎn),近些年不是一直有傳言會(huì)開源嗎?哈哈!
問題4:ansible在上千機(jī)器的集群中有沒有瓶頸?
有瓶頸,一次在千臺(tái)以上建議salt,萬臺(tái)建議go自己寫,主要是消息回收master受不了。
問題5:我想知道部署的時(shí)候,有沒有向移動(dòng)端發(fā)展的趨勢!
A:有,前沿的大公司已經(jīng)在用,如鵝廠,jumpserver.org也在首面放在 mobile的daemon。
問題6:感覺ansibie異常的時(shí)候不好排錯(cuò)!有沒有好的方法?
A:這樣問是因?yàn)槟氵€不熟悉,多被磨磨就好。python的報(bào)錯(cuò)輸出和shell一樣簡單。見過JAVA的復(fù)雜日志輸出會(huì)深有體會(huì),看完我們開發(fā)同學(xué)輸出的日志再看ansible的報(bào)錯(cuò)輸出是覺得好幸福。哈哈!
問題7:我們可否跟監(jiān)控服務(wù)器聯(lián)動(dòng),一旦執(zhí)行出錯(cuò)馬上報(bào)警,并且讓系統(tǒng)提供出錯(cuò)日志。
A:ansible本身提供mail alert功能,你可以把a(bǔ)nsible日志記錄到syslog里面,用ELK 或者splunk來實(shí)現(xiàn)報(bào)警?! ?/p>
Ansible原著翻譯團(tuán)隊(duì)
聯(lián)系人:stanley (微信號(hào): fengzhilinux) 5. Ansible專題分享,請把你想聽到的想學(xué)到的錄入到 http://www.178linux.com/qa/。
Ansible部落
致力全球流行技術(shù)本土化
運(yùn)維部落---Ansible部落群功能:1. Ansible的翻譯工作馬上就要結(jié)束進(jìn)行最后的 review 階段,你知道嗎?2. 為方便各位第一時(shí)間接受最新技術(shù)前沿,我們成立運(yùn)維部落微信訂閱號(hào),除了每日分享,定期更新外,還有大蝦不定期解惑,歡迎關(guān)注!