利用Ansible實現(xiàn)批量服務(wù)器自動化管理詳解
1.Ansible介紹
Ansible是一款開源的自動化運維工具, 在2012年由Michael DeHaan創(chuàng)建, 現(xiàn)在由Red Hat維護(hù)。Ansible是基于Python開發(fā)的,采用YAML語言編寫自動化腳本playbook, 可以在Linux、Unix等系統(tǒng)上運行, 通過SSH協(xié)議管理節(jié)點, 無需在被管理節(jié)點安裝agent。Ansible以其簡單、高效、無agent成為廣泛使用的自動化工具, 可以應(yīng)用于配置管理、應(yīng)用部署、任務(wù)調(diào)度等。
Ansible能夠自動管理遠(yuǎn)程系統(tǒng)和控制它們的期望狀態(tài), 一個基礎(chǔ)Ansible環(huán)境主要包含三大組件:
- 控制節(jié)點 - 安裝有Ansible的系統(tǒng)。我們可以在控制節(jié)點上運行Ansible命令,如
ansible
或ansible-inventory
。 - 管理節(jié)點 - Ansible控制的遠(yuǎn)程系統(tǒng)或主機(jī)。
- 清單 - 在邏輯上組織起來的受控節(jié)點列表。在控制節(jié)點上創(chuàng)建清單,用來描述Ansible管理的主機(jī)部署。
架構(gòu)如下:
2.Ansible安裝和配置
在我實驗的環(huán)境中, 我分配了四臺虛擬機(jī),IP地址分別為:192.168.201.202 -205, 其中192.168.201.202是主控端, 需要在該機(jī)器上安裝Ansible; 另外從203-205的三臺機(jī)器為受控端, 接收從202發(fā)來的指令。這里我安裝的Linux系統(tǒng)為ubuntu 22.04.3 LTS版本,直接輸入以下命令安裝:
# apt install ansible
安裝完成后輸入命令: ansible --version查看版本號,如圖:
接下來需要配置管理hosts, 在目標(biāo)目錄新建一個名為hosts的清單文件:/etc/ansible/hosts, 注意:如果/etc/下沒有ansible目錄,需要手動新建一個。
編輯hosts文件,輸入以下格式內(nèi)容,如圖:
在標(biāo)簽名稱下的三個IP地址是我的另外三臺虛擬機(jī),它們將接收ansible的統(tǒng)一管理。保存退出。
在命令行輸入命令:
# ansible all --list-hosts
該命令將驗證清單中的主機(jī), 返回信息如下:
在控制節(jié)點192.168.201.202中, 我們需要生成一個SSH的密鑰對,輸入以下命令:
# ssh-keygen -t rsa
中間提示一律按回車鍵即可, 結(jié)束后將在~/.ssh目錄下生成id_rsa和id_rsa.pub兩個密鑰文件,我們要將公鑰id_rsa.pub文件發(fā)送到三臺虛擬機(jī)上(192.168.201.203-205), 分別輸入以下命令:
# ssh-copy-id root@192.168.201.203 # ssh-copy-id root@192.168.201.204 # ssh-copy-id root@192.168.201.205
執(zhí)行結(jié)果如下:
接下來我們輸入以下命令進(jìn)行免密碼登錄驗證:
此時, 我們可以輸入以下命令進(jìn)行批量主機(jī)管理測試:
# ansible all -m ping
返回結(jié)果如下:
可以看到, 三臺受管理的主機(jī)已經(jīng)全部Ping通。
3.創(chuàng)建清單
通過清單文件, Ansible可以通過單個命令管理大量主機(jī), 且可以通過減少需要指定的命令行選項數(shù)量來幫助我們更有效地使用Ansible,例如:清單通常包含SSH用戶, 因此在運行Ansible命令時可以不需要包含-u參數(shù)來指定用戶名。
在任意目錄創(chuàng)建一個名為inventory.yaml的文件, 這里我把清單文件建在目錄: /home/inventory.yaml, 內(nèi)容如下:
下面輸入命令進(jìn)行驗證:
# ansible-inventory -i inventory.yaml --list
注意一下 -i 參數(shù)后面的yaml文件路徑, 我這里是cd到y(tǒng)aml文件的當(dāng)前目錄了, 所以直接跟的文件名, 在實際應(yīng)用過程中需要根據(jù)情況進(jìn)行全路徑和相對路徑的選擇。
該命令執(zhí)行返回結(jié)果如下:
接下來對清單中的受管節(jié)點執(zhí)行Ping操作, 執(zhí)行命令:
# ansible virtualmachines -m ping -i inventory.yaml
返回結(jié)果如下:
4.創(chuàng)建劇本(playbook)
劇本是Ansible用來部署和配置受管節(jié)點的自動化藍(lán)圖,使用YAML格式編寫。
下面先解釋一下劇本的基本元素:
- Play - 按順序排列的任務(wù)列表,與inventory中受管節(jié)點對應(yīng)映射。
- 任務(wù)(task) - 定義Ansible要執(zhí)行的一個或多個模塊操作的列表。
- 模塊:Ansible在受管節(jié)點上運行的代碼單元或二進(jìn)制文件。Ansible的模塊按集合組織,每個模塊有一個完全限定的集合名稱(Fully Qualified Collection Name, FQCN)。
在上面的操作中,我們使用了ansible
命令來ping清單中的主機(jī)?,F(xiàn)在創(chuàng)建一個playbook,它不僅可以ping主機(jī),還可以打印“Hello world”消息。
繼續(xù)在/home目錄下創(chuàng)建一個名為playbook.yaml的文件, 輸入以下內(nèi)容:
在該配置文件中, 我們定義了一個劇本的名稱、定義了hosts名稱和具體的任務(wù)(tasks), 其中任務(wù)項這里包含兩個: Ping主機(jī)和打印消息。
接下來我們看看劇本效果如何, 輸入以下命令:
# ansible-playbook -i inventory.yaml playbook.yaml
返回結(jié)果如下:
從結(jié)果來看,一切都OK, 成功執(zhí)行了我們的劇本并對三個目標(biāo)主機(jī)進(jìn)行了Ping
以上就是利用Ansible實現(xiàn)批量服務(wù)器自動化管理詳解的詳細(xì)內(nèi)容,更多關(guān)于Ansible服務(wù)器自動化管理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何在power shell添加vim實現(xiàn)代碼示例
這篇文章主要介紹了如何在power shell添加vim實現(xiàn)代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-12-12服務(wù)器常見問題匯總(常見故障及相應(yīng)的解決方法)
服務(wù)器一般是很少出現(xiàn)問題的,一旦出現(xiàn)問題,怎樣去積極的搶救呢?我們不能坐以待斃,原因一旦服務(wù)器故障,那么該服務(wù)器上的所有網(wǎng)站將都會無法打開。對于一個企業(yè)來說,網(wǎng)站就是他們的命脈,損失是巨大的2017-04-04HTTP響應(yīng)字段Transfer-Encoding含義及作用詳解
在HTTP通信中,響應(yīng)正文可以以多種不同的編碼方式傳輸,其中一種方式是chunked傳輸編碼,本文將詳細(xì)介紹Transfer-Encoding字段的含義和chunked傳輸編碼,以及提供示例來解釋這些概念2023-11-11KB967723補(bǔ)丁造成的MYSQL在Win2003上頻繁連接不上的問題的解決方法
微軟9月9日發(fā)布了TCP/IP更新補(bǔ)?。↘B967723),如果服務(wù)器開啟自動更新或者有自動更新軟件下載更新了這個補(bǔ)丁,那么就會出現(xiàn)這個問題。2011-02-02Caddy 一個用Go實現(xiàn)的Web Server
這篇文章主要介紹了Caddy 一個用Go實現(xiàn)的Web Server,簡潔易用,需要的朋友可以參考下2016-11-11