Ansible 概覽
時(shí)間:2022-03-27 06:18:02 | 來(lái)源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-03-27 06:18:02 來(lái)源:行業(yè)動(dòng)態(tài)
前面說(shuō)的方法論大家會(huì)覺(jué)得云里霧里,下面我們深入Ansible里面,因?yàn)锳nsible本身部署起來(lái)就是非常簡(jiǎn)單的??催@個(gè)圖中間畫了筆記本,就是Ansible整個(gè)運(yùn)行時(shí)的環(huán)境,這部分程序代碼是可以跑在你的任何一個(gè)設(shè)備上,基本上只要是一臺(tái)機(jī)器就可以跑Ansible這樣的軟件。
那Ansible這個(gè)軟件是管理大多數(shù)機(jī)器的,它是管理端,是管到若干臺(tái)機(jī)器,它通過(guò)SSH這個(gè)通道管理這么多臺(tái)機(jī)器。這里面有一個(gè)好處,它最大程度地利用本身的功能,所以說(shuō)我們講Ansible要管理另外一臺(tái)機(jī)器,如果另外一臺(tái)機(jī)器沒(méi)有和你對(duì)應(yīng)的接口,你是沒(méi)有辦法管理的。對(duì)于不同的網(wǎng)絡(luò)設(shè)備、存儲(chǔ)設(shè)備也會(huì)有對(duì)外暴露的接口,通過(guò)這樣的接口管理。左邊有Inventory,也就是說(shuō)我們做什么事情,我們像一個(gè)劇本一樣,所有事情都寫在這個(gè)文件里面,通過(guò)這臺(tái)機(jī)器就可以分散到不同機(jī)器上執(zhí)行了。當(dāng)然了,對(duì)于里面細(xì)節(jié)的東西,比如這個(gè)東西你要推到一千臺(tái)機(jī)器或者一萬(wàn)臺(tái)機(jī)器上,你是一起推還是分批推,也里面有細(xì)節(jié)的東西,就不再深入太多了。
我們看一下Inventory這里,這是靜態(tài)的列表,是不變的。另外一種情況是動(dòng)態(tài)的,我被管理的機(jī)器是發(fā)生變化的,現(xiàn)實(shí)中我們也經(jīng)常遇到這樣的問(wèn)題,比如我將機(jī)器放到里面,需要做同樣的配置,這里面Inventory比較方便的地方就是列表的格式,實(shí)際上就直接解析為這樣的文件,如果你是可執(zhí)行的腳本。右邊我是簡(jiǎn)單把流程寫了一下,如果是簡(jiǎn)單的腳本,會(huì)通過(guò)你腳本取得你當(dāng)前的列表。大家如果這個(gè)環(huán)節(jié)里面,對(duì)接不同的底下的平臺(tái),實(shí)際上通過(guò)這個(gè)腳本你就可以取得當(dāng)前的動(dòng)態(tài)節(jié)點(diǎn)列表。
這里面可能大家會(huì)問(wèn)這樣的問(wèn)題,靜態(tài)的很好理解,靜態(tài)就三臺(tái)機(jī)器,如果是動(dòng)態(tài),有可能我取的時(shí)候,把節(jié)點(diǎn)取出來(lái)了,然后運(yùn)行了,再取就不一樣了,這樣同步的一致性肯定是需要考慮的。這個(gè)里面實(shí)際上就印證了我開(kāi)始說(shuō)了Ansible簡(jiǎn)潔的設(shè)計(jì)。對(duì)于這里面的運(yùn)維操作,實(shí)際上就像互聯(lián)網(wǎng)很多應(yīng)用的推送一樣,我不一定所有東西都是實(shí)時(shí)的,所以這里面讓你業(yè)務(wù)部需要那么強(qiáng)的實(shí)時(shí)性。
第二點(diǎn),簡(jiǎn)單說(shuō)一下Ansible的模塊,在第一張簡(jiǎn)單架構(gòu)圖里面沒(méi)有顯現(xiàn)出來(lái),另外就是playbook要執(zhí)行哪些劇本,這些最基本的功能模塊。通過(guò)這兩條簡(jiǎn)單的命令,就很容易熟悉Ansible各個(gè)模塊,以及他們是怎樣使用的。
接下來(lái)說(shuō)一下冪等性,就是這個(gè)東西是可重復(fù)的,我們不管執(zhí)行多少遍,結(jié)果都是一致的。這里面舉了一個(gè)簡(jiǎn)單的例子,比如我們要啟這樣的服務(wù),實(shí)際上這里面我們對(duì)應(yīng)了Ansible里面是以模塊指定名字和它的狀態(tài)是Started。這是簡(jiǎn)單的例子,可能這個(gè)例子太簡(jiǎn)單了。我舉另外一個(gè)例子,比如你拷貝一個(gè)文件,在你拷貝的時(shí)候,我要確認(rèn)你在目標(biāo)有沒(méi)有這樣的文件,如果有就不用拷貝了,如果沒(méi)有就拷貝一下。所有的功能都在這里的模塊實(shí)現(xiàn)的。
模塊過(guò)去之后,我們對(duì)模塊進(jìn)行編排,這樣的話,我們就有劇本這樣的概念,也就是playbook。playbook是以YAML的格式寫的,實(shí)際上在Ansible里面,我們有這樣的一個(gè)執(zhí)行引擎,解釋引擎解釋這個(gè)YAML文件。
我們簡(jiǎn)單看一下劇本長(zhǎng)什么樣子,這里就是簡(jiǎn)單的一個(gè)playbook,我大概從上到下捋一下,幾個(gè)關(guān)鍵的東西,當(dāng)然里面可能有其他的關(guān)鍵字,這里面簡(jiǎn)單的playbook,我是了解Ansible,我不了解Ansible也理解了八九不離十,但是我們理解了里面的關(guān)鍵字,可能我們就里面的程序是語(yǔ)言關(guān)鍵字:name、host、vars、tasks,這是一個(gè)簡(jiǎn)單的playbook。