tft每日頭條

 > 科技

 > ansible運維工具

ansible運維工具

科技 更新时间:2024-12-18 02:01:55

【寫在最前】我們在平時的編程學習中,或多或少,或早或晚,都要接觸到Linux服務器;當你工作中接觸的服務器比較多(或者你緻力于成為一名合格的linux集群運維人員),那麼Ansible就是你必須要掌握的維護工具!本文緻力于成為(或許已經是)全網最簡介的ansible工具教程,讓我們花5分鐘時間搞懂ansible運維工具,相信聰明的你,看完一定會有收獲!

ansible運維工具(5分鐘熟悉Ansible集群運維工具)1

【正文開始】

為什麼要用Ansible?

假設你有100台服務器,需要先安裝同樣的業務軟件,再進行相似的配置文件修改,如果靠人工每台挨個去操作,不僅效率低下,而且極易出錯。

Ansible,就是為Unix/Linux集群運維而生!

什麼是Ansible?Ansible是一個集群運維管理工具,這是一款入門非常簡單但是功能卻極其強大的軟件,僅靠SSH就能正常運行各種定制化任務。

跟普通的bash腳本相比,Ansilble有一個非常重要的特點,就是能保證任務操作的“幂等性”(可以重複執行任務,并且執行結果保持不變)

# 準備工作(制作SSH免密登錄環境)

假設: 想通過192.168.1.2登錄 1.3,那麼在1.2上執行如下兩條命令:ssh-keygen ssh-copy-id [email protected]注1:第1條命令一路回車即可在本地生成密鑰對(在本地/home/xxx/.ssh/下生成兩個文件:id_isa.pub 和 id_rsa)注2:第2條命令是将本地公鑰發送到1.3上(需要輸入2遍xxx用戶的密碼)

# 安裝 ansible

sudo yum -y install ansible

注:安裝後會自動生成 /etc/ansible 目錄(内含 ansible.cfg配置文件)

# 配置(管理)服務器節點ansible.cfg中第一行配置内容為:#inventory = /etc/ansible/hosts這個 inventory 表示是服務器節點配置文件地址(默認為/etc/ansible/hosts)

當然,你也可以在具體的ansible命令中通過 -i 參數顯式指定其他配置文件

hosts配置文件内容舉例:

[group1]192.168.1.3

192.168.1.4

192.168.1.5

注:這裡的group1表示服務器群組的名字,你可以随便定義

# ansible基本用法:

需求舉例:在遠端N台服務器上同時安裝nginx軟件實現命令:

ansible -i /etc/ansible/hosts group1 -b --become-user=root \ -m shell -a 'yum -y install nginx'

參數釋義:-i: 指定host服務器配置清單文件的路徑(默認是在/etc/ansible/hosts,可選項)-b: become“成為”,即切換成root用戶去執行命令-m: 指定module模塊名稱,比如 ping ,copy 等-a: 用于将參數傳遞給定義的模塊m

另一個例子:

ansible group1 -m ping

可借助ping模塊實現group1群組所有服務器的網路連通性檢測。

# ansible進階用法:

1)保持操作幂等

聯想上面的基本語法:

ansible group1 -m shell -a 'yum -y install nginx'

這種風格有一個缺點:不能保證操作幂等性。

我們來改進一下:

ansible group1 -m yum -a 'name=nginx state=installed'

執行結果為:

127.0.0.1 | success >> {"changed": false}

我們看到結果中有: changed:false 表示遠端服務器已經安裝過nginx了,不會再重複安裝

2)使用 playbook劇本、task任務、handler處理程序

playbook劇本可以支持運行多個task任務,并提供一些更高級的功能。

handlers處理程序與task任務基本相同,但隻有當另一個任務調用它時才會運行(例如在服務安裝成功後,再啟動該服務)

在ansible中,劇本相關的配置都使用Yaml文件定義(必須使用空格縮進,不允許使用tab鍵縮進,故建議将你的IDE工具的tab按鍵輸出替換成4個空格)。 我們繼續以安裝nginx并啟動nginx為例進行講解: 定義劇本:

nginx.yml 内容如下:

- hosts: group1become: yesbecome_user: roottasks:- name: “安裝nginx”yum:pkg: nginxstate: installedwhen: successnotify:- Start Nginx handlers:- name: Start Nginxservice:name: nginxstate: started

運行劇本:

$ ansible-playbook nginx.yml

此時,hosts集群配置文件中的group1群組下的3台服務器上的nginx軟件,就已經全部裝好啦。

【全文完】--------------------------------十年技術沉澱,隻做原創文章;及時關注作者,成就大牛之路!如果您對文章内容有不同意見或獨到見解,歡迎大家在評論區留言讨論,作者也會第一時間進行互動回複。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved