




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Ansiblc是基于一致性、安全性、高可靠性設(shè)計(jì)的輕量級(jí)自動(dòng)化工具,功能強(qiáng)大、部署
便捷、描述清晰。對(duì)于管理員、開發(fā)者、IT經(jīng)理等都容易上手,學(xué)習(xí)曲線較低,能夠快速
理解.、掌握Ansiblc的自動(dòng)化體系,滿足不同技術(shù)級(jí)別的用戶需求。本文分享了在Ansiblc
部署、維護(hù)、調(diào)優(yōu)中常見的一些難點(diǎn)解決辦法和技巧,幫助大家更快的掌握使用方法。
1、Ansible運(yùn)維管理平臺(tái)部署都可以部署在哪些系統(tǒng)上?對(duì)系統(tǒng)配置有哪些具體要求?
對(duì)管理主機(jī)的要求:
FI前,只要機(jī)器上安裝了Python2.6或Python2.7(windows系統(tǒng)不可以做控制主機(jī)),都
可以運(yùn)行Ansibleo主機(jī)的系統(tǒng)可以是RedHat,Debian,CentOS,OSX,BSD的各種版本,等等。
自2.0版本開始,Ansible使用了更多句柄來管理它的子進(jìn)程,對(duì)于OSX系統(tǒng),需要增加ulimit
值才能使用15個(gè)以上子進(jìn)程,方法sudolaunchctllimitmaxfilcs10242048,否則可能會(huì)看
見"Toomanyopenfile”的錯(cuò)誤提示。
Ansible每個(gè)版本里面有詳細(xì)的設(shè)備列表你可以參考
目前常用的支持RedHai,Ubuntu,SUSE,windows(Ansible需要winrm),AIX(需要安
裝python),HPUX(需要安裝python)網(wǎng)絡(luò)設(shè)備cisco,Huawei;防火墻Fl前只能連接操作需
要模塊支持cisc。的,華為的目前沒看到模塊。
2、無法訪問外網(wǎng)如何快速安裝Ansible?是否有打包好的依賴包?
Ansiblc軟件安裝的方式較多,非常靈活,可以滿足各種環(huán)境的部署需求。一般可以直
接用源碼進(jìn)行安裝,包括從GiUIub源碼庫(kù)安裝方式、TAR包安裝、制作RPM包安裝等。
也可用操作系統(tǒng)軟件包管理工具進(jìn)行安裝,包括YUM安裝(適合Fedora.RHEL、CentOS)、
APT安裝(適合Ubuniu)、Homebrew安裝(適合MacOSX)、PIP安裝等。其中大部分安裝
方式需要服務(wù)端連通公網(wǎng),在無法連接外部互聯(lián)網(wǎng)的條件下,可以通過TAR包的安裝方式,
快速搭建Ansible整套環(huán)境,所有安裝包的下載地址為:
yumdownload把需要的包下載到一個(gè)目錄。
然后把這個(gè)目錄做成yum本地源。
可以mount操作系統(tǒng)安裝盤dvd版鏡像iso文件,找到軟件包目錄然后將yum源設(shè)置為
該目錄。
3、在編排程序執(zhí)行,軟件安裝等過程中,Ansibleplaybook與shell腳本,各自的特點(diǎn)有
哪些?
【問題描述】有時(shí)候遇到linux系統(tǒng)批量安裝程序,部分程序是公司內(nèi)部開發(fā)人員編寫,
會(huì)傾向?qū)憇hell,再通過批量工具執(zhí)行腳本。在什么情況下會(huì)選擇使用ansible工具?
目前使用的是2.9.9版本,實(shí)際使用過程發(fā)現(xiàn),ansible解決了大文件批最遠(yuǎn)程復(fù)制效率
低的問題,以前老版本在上傳IG的大文件非常慢?
最大的三個(gè)不同:
1、Ansible內(nèi)置了大量的模塊,這些模塊是聲明式的(Declarative),只需使用這些模塊
描述被管節(jié)點(diǎn)期望達(dá)到的狀態(tài)。而Shell腳本是命令式,聲明式相比命令式更智能,例如分
別使用Shell腳本和AnsiblePlaybook啟動(dòng)某個(gè)服務(wù),然后再完成其他事情。如果在啟動(dòng)時(shí)發(fā)
現(xiàn)這個(gè)服務(wù)已經(jīng)啟動(dòng),監(jiān)控端口已經(jīng)被占用,Shell腳本將異常退出,返回非0,導(dǎo)致后面
的腳本中斷執(zhí)行,但使用Playbook將不會(huì)遇到這樣的問題。
2、Ansible內(nèi)置模塊都是等幕性的(Idempotent)。等幕性對(duì)于自動(dòng)化維護(hù)是非常重要的
特性,這樣在被管節(jié)點(diǎn)上多次執(zhí)行AnsiblePlaybook也能達(dá)到同樣效果。相對(duì)于直接執(zhí)行操
作系統(tǒng)Shell腳本的方式是巨大的改進(jìn),操作系統(tǒng)腳本再執(zhí)行一次可能就會(huì)產(chǎn)生不同的、非
預(yù)期的結(jié)果。而Ansible具有'幕等性的特點(diǎn),無論執(zhí)行多少次,只要你的操作系統(tǒng)是同一個(gè)
版本,那么安裝出來的環(huán)境絕對(duì)是一樣的,這樣也就保證了應(yīng)用所處的底層環(huán)境的一致性,
而不會(huì)造成同一個(gè)版本的應(yīng)用在不同的機(jī)器上運(yùn)行出現(xiàn)不同的效果的問題。
3、AnsibleRolc功能,可以使用ansiblcrole來簡(jiǎn)化playbook的編寫且易于生用,這點(diǎn)是
Shell腳本非常難以做到論。例如我們想要在主機(jī)A、B、C上部署JDK1.7的環(huán)境,主:機(jī)D、
E、F上部署JDK1.8的環(huán)想而又想在A、B上安裝Nginx;C、D上部署Tomcat;E、F上
部署MySQL,這時(shí)候使用Ansible工具是最佳的。對(duì)于這種情況只需要新建5個(gè)roles,分
別是:JDK1.7、JDK1.8、Nginx、Tomcat、MySQL。對(duì)于A、B主機(jī),安裝JDK1.7和Nginx
的roles,C主機(jī)安裝JDK1.7和Tomcat的roles;D主機(jī)安裝JDK1.8和Tomcat的角色,E、
F主機(jī)安裝JDK1.8和MySQL的角色。換句話講,Ansible就是對(duì)于各種環(huán)境的搭積木式組
合,你需要什么環(huán)境,我就給你裝上什么環(huán)境,對(duì)于系統(tǒng)管理員來講,不必再去每一臺(tái)機(jī)器
上根據(jù)需求名單一個(gè)一個(gè)安裝,不僅效率低、勞動(dòng)成本高、而且容場(chǎng)出錯(cuò),造成環(huán)境的不一
致。
playbook,就像你坐鎮(zhèn)指揮臺(tái)指揮大家打仗,發(fā)布號(hào)令即可,最后執(zhí)行的結(jié)果坐等就有
報(bào)告。
shell,就像你跑到步兵陣營(yíng),一個(gè)一個(gè)告訴他們一會(huì)兒怎么操作,然后再跑到騎兵陣營(yíng)
一個(gè)一個(gè)告訴他們?cè)趺床僮?。。。。?zhí)行結(jié)果你還需要一個(gè)一個(gè)記錄,自己匯總。
4、Ansible批帶管理主機(jī)時(shí)選擇長(zhǎng)連接還是短連接?選擇長(zhǎng)連接時(shí)資源占用高不高?
用長(zhǎng)連接效率高,加快Ansible的執(zhí)行速度,尤其是批量管理的主機(jī)上千上萬(wàn)時(shí)。而且
長(zhǎng)連接可以復(fù)用,對(duì)受管主機(jī)的開銷就是一個(gè)連接的開銷。
開源版本的是無連接方式,每次創(chuàng)建ssh連接。
企業(yè)版本支持MQ,是長(zhǎng)連接方式。
5、關(guān)于執(zhí)行Ansible查看任務(wù)進(jìn)度:在執(zhí)行需要長(zhǎng)時(shí)間等待的命令時(shí),如何顯示實(shí)時(shí)
任務(wù)的狀態(tài)。
Ansibleplaybook執(zhí)行任務(wù)時(shí)會(huì)顯示當(dāng)前任務(wù)執(zhí)行到哪兒的。
6、Ansible告警通知功能除了郵件,現(xiàn)在支持微信方式嗎?
用Ansible調(diào)用腳本驅(qū)動(dòng)微信接口,微信接口需要開發(fā)。
7^關(guān)于Ansiblemysq]模塊執(zhí)行添加權(quán)限,然后mysql查看用戶權(quán)限卻失?。?/p>
【問題描述】在創(chuàng)建mysql用戶時(shí)使用mysql模塊,結(jié)果權(quán)限卻沒有執(zhí)行上
?name:Config/etc/ay.cnf
Unelnffle:desta/etc/fstate^present
?7character-set-server-utf8-
name:servicestartMysql
service:nd?eM>ari4dben-bledpc$tate?$tarted
-name:createadatabaseI
?ysqV.db:|
login.host:-127.0.e,l"
login_user:"roof
Vogin^port:"3366"
naae:"keystone"
encoding:,utf8"
state:"present*
-name:createdatabaseuser
login_user:root
nene:keystone
prlv:,?.?:ALl,
用mysql_user模塊授權(quán)是沒問題的,您可以用selecL*frommysql.usei?看到實(shí)際用戶權(quán)限
已經(jīng)授予的。
只是您查看用戶授權(quán)的命令有些許問題,要用showgrantsfor;去查看,因?yàn)槟ㄟ^模塊
去授權(quán)默認(rèn)的主機(jī)是localhosl
8、如何使用Ansible使用變量在一個(gè)被控節(jié)點(diǎn)中,往一個(gè)文件中寫入另一個(gè)被控節(jié)點(diǎn)
的IP?
【問題描述】在自己寫ansible部署K8s的playbook時(shí),master節(jié)點(diǎn)為0node
節(jié)點(diǎn)為12
在編寫node節(jié)點(diǎn)時(shí)要插入master的信息,由于無法做到以變量的方式把master節(jié)點(diǎn)ip
信息插入到node節(jié)點(diǎn)的/etc/kubcrnetes/kubclct文件中,最后以var變最的方式解決。請(qǐng)問如
何使用ansible使用變量在一個(gè)被控節(jié)點(diǎn)中,往一個(gè)文件中寫入另一個(gè)被控節(jié)點(diǎn)的IP?
(root@ansibleroles]*catk8s-node/tasks/set-config.yaml
-name:setfileconfig
replace:
path:,{{itea.path)}'
regexp:*{(ite?.regexp})*
replace:*{{it?i.replace})*
with_ite?s:
-7path:Vetc/kubernetes/config*,regexp:?127.0.6.1,,replace:,backup:yes)
-{path:Vetc/kubernetes/kubelet*,regexp:?--address-127.0.8.T,replace:1--address^.0.0.O'.backup:yes)
-(path:Vetc/kubernetes/kubelet1.regexp:*--hostnai?e-override>*,replace:?--hostnameoverride?{{host
name|quote}}'}
.i{p^fh:Vetc/kubernetes/kubelet*,regexp:?--api-servers?h11p://127.0.0.1:8080?.replace:,--api-servers?http:
/>|<(host))18080')
-TP3ih:Vetc/kubernetes/kubelet1.regexp:KUBELET-PORT',replace:?KUBELET_PORT')
?<path:Vetc/kubernetes/kubelet*,regexp:*registry.access.redhat.co^rhel7/pod-infrastructure:latest*?replac
e:docker.io/xiaotech/poa-inrrastrucTure:laiesx*)
(root^ansibleroles]#cat../
hostsk8s.ansible.tar.gzMdin.ywilroles/
JraotAanderolescatk8s-node/vars/Min.yanil
host:master|
irootsansiDieroles)*I
三種方式:
1、直接在playbook中通過“vars:變量名”的方式聲明變量,并通過“{{變量名}}”的方式
使用已聲明的變量的方式來帶入master節(jié)點(diǎn)的IP地址信息。
2、在roles中用var變量文件的方式(您的方式)。
3、引用inventory文件中定義的主機(jī)變量°
9、Ansib匕能否自定義功能?
【問題描述】Ansible在使用過程中,可能會(huì)有部分功能無法滿足要求,能否根據(jù)實(shí)際
情況,進(jìn)行自行定義?
ANSIBLE很強(qiáng)大,能夠支持自定義模塊和自定義插件,來滿足我們的實(shí)際需要,實(shí)現(xiàn)
現(xiàn)有模塊和插件無法達(dá)到的效果。
Ansible自定義模塊:
模塊是Ansible的核心引擎,Ansible中的模塊就是傳輸給遠(yuǎn)程主機(jī)并執(zhí)行的那點(diǎn)代碼。
它們可以使用遠(yuǎn)程主機(jī)可以執(zhí)行的任何語(yǔ)言實(shí)現(xiàn)。Ansible的核心開發(fā)團(tuán)隊(duì)維護(hù)的Ansible
核心模塊大概有150多個(gè),涵蓋了云、命令、數(shù)據(jù)庫(kù)、叉件、網(wǎng)絡(luò)、包、源控制、系統(tǒng)、工
具、web設(shè)施等等。另外,還有100多個(gè)其他額外模塊,主要由社區(qū)貢獻(xiàn)者維護(hù),它們擴(kuò)展
了這些類別的很多功能。真正神奇就發(fā)生在模塊代碼內(nèi)部,它們接受傳入的參數(shù),然后建立
預(yù)期的結(jié)果。而且Ansible能夠提供一種簡(jiǎn)單的機(jī)制來利用來自Ansible外部的自定義模塊。
Ansible自定義插件使用場(chǎng)景舉例:
1)除Paramiko、本機(jī)SSH、Local、Winrm連接方式外,希望Ansible基于新的通信方式
與遠(yuǎn)程主機(jī)交互;
2)除Ansible內(nèi)置的with_itemsswith_fileglob循環(huán)體外,希望有新的遍歷方式;
3)除了Ansible內(nèi)置的hosl_vars、group_vars等變量調(diào)用方式外,希望有新的變量定義方
式;
4)除了Ansible的內(nèi)置的Jinja2模板渲染、to_yaml、【o」son等過漉器外,希望有新的過
濾器;
5)定義新的回調(diào)機(jī)制,即捕獲響應(yīng)事件后自定義新的響應(yīng)形式。
Ansible的功能自定義可以通過兩個(gè)方法來解決:
方法1:自定義腳本,如果自定義功能比較簡(jiǎn)單,可以通過操作系統(tǒng)腳本方式來實(shí)現(xiàn)的
話,可以通過自定義一個(gè)shell腳本,并通過ansible的scripl模塊進(jìn)行調(diào)用。以實(shí)現(xiàn)自定義
功能
方法2:自定義模塊,這個(gè)會(huì)稍微復(fù)雜一點(diǎn)。ansible是通過pylhon語(yǔ)言開發(fā)的,并且
支持通過python語(yǔ)言自定義模塊。不過這一點(diǎn)需要具有一定的編程知識(shí)。
[root@tivscapinginx__was_mysql]#tree
—deploy_nginx_was_mysql.yaml
——hosts
—roles
—base.instal1
—files
1——RHEL.repo
—tasks
1——main,yaml
—templates
1-ntp.conf.j2
——mysql_instal1
—tasks
1——main,yaml
——templates
1—my.cnf.j2
——nginx_instal1
—tasks
1—main,yaml
—templates
1—nginx.cfg.j2
—was_insta11
—files
1——wasinstall.sh
—tasks
1—main,yaml
vars
?—all
其中deploy_nginx_was_mysql.yaml是roles的入口文件,例如:
-name:instal1ntpdserviceandinirbaseenvironmentforallhosts
hosts:al1
roles:
-base_install
-name:instal1mysql
hosts:mysql
roles:
-mysql_install
-name:instal1was
hosts:was
roles:
-was_insta11
-name:instal1nginx
hosts:nginx"
roles:
-nqinx_install
這里就可以根據(jù)hosts文件中定義的不同主機(jī)組來引用不同的roles進(jìn)行相關(guān)的配置部
署,并通過:
ansible-playbook-ihostsdeploy_nginx_was_mysql.yaml來調(diào)用。
hosts文件中定義了nginx、mysql和was主機(jī)組相關(guān)信息。
vars目錄下的文件中定義playbook中需要引用到的變量。
roles目錄下則編制了base_install、mysqUnstall、was_install、nginx_instaH等四個(gè)不同
roles的playbook,配置模板和文件等內(nèi)容。
通過這樣分拆的方式,一個(gè)復(fù)雜的playbook大大簡(jiǎn)化、清晰化,而且rolesFI錄下的所
有子roles都可以更用到其他項(xiàng)目中去使用,我們的任務(wù)就是編寫一個(gè)個(gè)小型的playbook,
最后再用role的方式去整合,形成一個(gè)大的復(fù)雜的功能邏輯。
使用Ansiblc實(shí)現(xiàn)自動(dòng)化運(yùn)維的一些技巧
最近一年才有機(jī)會(huì)在生產(chǎn)環(huán)境上使用Ansibleo用的過程中,想把一些小技巧記錄下來,
避免自己忘記。如果能幫助到其他同學(xué)就更好了。如果有同學(xué)指出有更好的方法,就更更好
了。
技巧1:校驗(yàn)?zāi)愕哪0逦募欠裾_
通常我們會(huì)使用tcmplatcmodulc來生成應(yīng)用的配置,比如生成Nginx的配置或者sudocrs
配置。而像sudoers文件內(nèi)的配置錯(cuò)誤可能直接導(dǎo)致無法登錄。所以,我們希望在生成這些
配置文件后能校驗(yàn)一下它的正確性。如果校驗(yàn)失敗,直接停止,不生成該配置文件。
而templatemodule有一個(gè)屬性validate就是為了實(shí)現(xiàn)這一需求的:
-template:
src:"user-sudoers"
dest:'7etc/sudoers.d/abc"
validate:visudo-cf%s
校驗(yàn)Nginx配置文件的文件:
-namc:Copythcnginxfilc
template:
src:nginx.conf.j2
desl:/etc/nginx/nginx.conf
validate:7usr/sbin/nginx-t-c%s"
notify:
-restartnginx
校驗(yàn)Prometheus配置文件:
-namc:CopyPromcthcusconfig
template:
src:promelheus.yml.j2
dest:"/etc/pronietheus.yml"
validate:"prorntoolcheckconf^g%s'^
notify:
rcloadpromcthcusconfig
校驗(yàn)Logstash配置文件:
-naine:templateconfigs
template:
src:"logstash-filter.conf
dest:"/opt/iogstash/conf'
validate:Mlogstash-t-f%s"
environment:
JAVA_HOME:""##logstash命令需要JAVA_HOME環(huán)境變量
技巧2:使用host變量解決分布式系統(tǒng)中的id問題
在部署Zookeeper時(shí),,通常會(huì)部署3臺(tái)組成集群,同時(shí)每臺(tái)Zooke叩er都需要在配置一
個(gè)myid的文本文件,而這個(gè)文件中只放id。而id是要求每臺(tái)機(jī)器都是不同的。這時(shí)host
變量派上用場(chǎng)了。定義host變量有兩種方式:
第一種:直接在inventory文件中定義
[zk]
linyi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人力資源公司勞動(dòng)協(xié)議
- 私人醫(yī)生健康咨詢免責(zé)協(xié)議
- 數(shù)字貨幣在金融交易中的實(shí)踐
- 艾梅乙知識(shí)培訓(xùn)課件節(jié)選
- 餐飲業(yè)營(yíng)銷策略行業(yè)試題
- 皮膚與汗液分泌課件+-2024-2025學(xué)年北師大版生物七年級(jí)下冊(cè)
- 電影院線影片引進(jìn)與發(fā)行合作協(xié)議
- 農(nóng)業(yè)技術(shù)推廣知識(shí)專項(xiàng)練習(xí)題
- 個(gè)性化定制生產(chǎn)模式優(yōu)化研究報(bào)告
- 生物化學(xué)基礎(chǔ)知識(shí)測(cè)試題卷及答案
- GB/T 7588.2-2020電梯制造與安裝安全規(guī)范第2部分:電梯部件的設(shè)計(jì)原則、計(jì)算和檢驗(yàn)
- 部編版二年級(jí)語(yǔ)文下冊(cè)第一單元口語(yǔ)交際一語(yǔ)文園地一課件
- 近代早期的歐洲-人教版課件
- 高中彎道跑教案
- 音樂劇悲慘世界歌詞
- 大狗巴布課件教學(xué)
- 湖南非稅在線繳費(fèi)操作步驟
- 精品殘疾兒童教育送教上門語(yǔ)文教案課程
- 《法院執(zhí)行實(shí)務(wù)》單元三(上)(課堂PPT)課件
- 幼兒園一日生活中的保教結(jié)合(課堂PPT)
- 有害物質(zhì)培訓(xùn)教材(ROHS2.0及REACH)
評(píng)論
0/150
提交評(píng)論