來自:51CTO博客,作者:羊木狼
ansible是新出現(xiàn)的自動化運維工具,基于Python開發(fā),集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點,實現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運行命令等功能。 ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:(1) 連接插件connection plugins:負責和被監(jiān)控端實現(xiàn)通信;(2) host inventory:指定操作的主機,是一個配置文件里面定義監(jiān)控的主機;(3) 各種模塊核心模塊、command模塊、自定義模塊;(4) 借助于插件完成記錄日志郵件等功能;playbook:劇本執(zhí)行多個任務時,非必需可以讓節(jié)點一次性運行多個任務。
如何部署ansible ?1.準備如表-1所示的實驗環(huán)境,操作系統(tǒng)為RHEL8,配置主機名稱、IP地址、YUM源。
ansible原理:
控制端主機自帶很多模塊(模塊就是腳本);
ansible通過ssh遠程被管理主機,將控制端的模塊(腳本)或命令傳輸?shù)奖还芾碇鳈C;
在被管理端主機執(zhí)行模塊(腳本)或命令,執(zhí)行不同的模塊或命令可以實現(xiàn)不同的功能;
最后ansible退出ssh遠程。
絕大多數(shù)模塊(腳本)都需要參數(shù)才能執(zhí)行成功!?。☆愃朴趕hell腳本的位置變量!
拓撲結構如圖-1所示。
2.步驟一:準備基礎環(huán)境
控制節(jié)點要求:
· 域名解析(為了方便后期操作,可以不做)
· 配置SSH密鑰(ansible是基于ssh實現(xiàn)遠程控制)
· 安裝Ansible軟件
1)Control控制節(jié)點
修改/etc/hosts,在文件中手動添加如下內(nèi)容,修改該文件的目的是做域名解析。
1. [root@control ~]# vim /etc/hosts #修改文件,手動添加如下內(nèi)容(不要刪除文件原來的內(nèi)容)
2. 192.168.4.253 control
3. 192.168.4.11 node1
4. 192.168.4.12 node2
5. 192.168.4.13 node3
6. 192.168.4.14 node4
7. 192.168.4.15 node5
如何驗證?
[root@control ~]# ping node1 #可以使用ping命令依次ping所有域名
配置SSH密鑰實現(xiàn)免密碼登錄(非常重要)
Ansible是基于SSH遠程的原理實現(xiàn)遠程控制,如果控制端主機無法免密登錄被管理端主機,后續(xù)的所有試驗都會失?。。?/p>
1. [root@control ~]# ssh-keygen -f /root/.ssh/id_rsa -N '' #生成ssh密鑰
2. #-f指定密鑰文件存放在哪個目錄,文件叫什么名字,-N ''設置密鑰的密碼為空
3. [root@control ~]# for i in node1 node2 node3 node4 node5
4. do
5. ssh-copy-id $i
6. done
7. #拷貝密鑰到遠程主機
8. #提示:拷貝密鑰到遠程主機時需要輸入對方電腦的賬戶密碼才可以?。?9. #拷貝密鑰到node1就需要輸入node1對應賬戶的密碼,拷貝密鑰到node2就需要輸入node2對應的密碼
如何驗證?
警告:如果有任何一臺主機遠程還需要密碼,就不要往下繼續(xù)操作,后面實驗都會失?。。?!
[root@control ~]# ssh node1 #使用ssh命令依次遠程
所有主機都可以免密碼登錄
- 部署Ansible軟件(僅Control主機操作,軟件包在ansible_soft目錄)。
1. [root@control ~]# tar -xf ansible_soft.tar.gz
2. [root@control ~]# cd ansible_soft
3. [root@control ansible_soft]# dnf -y install *
被控制節(jié)點要求:· Ansible默認通過SSH協(xié)議管理機器· 被管理主機要開啟SSH服務,并允許控制主機登錄· 被管理主機需要安裝有Python步驟二:修改配置文件****主配置文件說明:主配置文件ansible.cfg(主配置文件的內(nèi)容可以參考/etc/ansible/ansible.cfg)ansible配置文件查找順序首先檢測ANSIBLE_CONFIG變量定義的配置文件(默認沒有這個變量)其次檢查當前目錄下的./ansible.cfg文件再次檢查當前用戶家目錄下~/ansible.cfg文件最后檢查/etc/ansible/ansible.cfg文件
1) 修改主配置文件
1. [root@control ~]# mkdir ~/ansible
2. [root@control ~]# vim ~/ansible/ansible.cfg
3. [defaults]
4. inventory = ~/ansible/inventory
5. #主機清單配置文件(inventory可以是任意文件名),英語詞匯:inventory(清單、財產(chǎn)清單)
6. #forks = 5 #ssh并發(fā)數(shù)量
7. #ask_pass = True #使用密鑰還是密碼遠程,True代表使用密碼
8. #host_key_checking = False #是否校驗密鑰(第一次ssh時是否提示yes/no)
2) 修改主機清單文件(清單文件名必須與主配置文件inventory定義的一致)
1. [root@control ~]# vim ~/ansible/inventory
2. [test] #定義主機組(組名稱任意)
3. node1 #定義組中的具體主機,組中包括一臺主機node1
4. [proxy] #定義主機組(組名稱任意),英語詞匯:proxy(代理人,委托人)
5. node2 #proxy組中包括一臺主機node2
6. [webserver]
7. node[3:4] #這里的node[3:4]等同于node3和node4
8. [database]
9. node5
10. [cluster:children] #嵌套組(children為關鍵字),不需要也可以不創(chuàng)建嵌套組
11. webserver #嵌套組可以在組中包含其他組
12. database