運維自動化,你必須掌握ansible如何部署

來自:51CTO博客,作者:羊木狼

鏈接:https://blog.51cto.com/guoting/1553446

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é)點一次性運行多個任務。

image

如何部署ansible ?1.準備如表-1所示的實驗環(huán)境,操作系統(tǒng)為RHEL8,配置主機名稱、IP地址、YUM源。

image

ansible原理:

控制端主機自帶很多模塊(模塊就是腳本);

ansible通過ssh遠程被管理主機,將控制端的模塊(腳本)或命令傳輸?shù)奖还芾碇鳈C;

在被管理端主機執(zhí)行模塊(腳本)或命令,執(zhí)行不同的模塊或命令可以實現(xiàn)不同的功能;

最后ansible退出ssh遠程。

絕大多數(shù)模塊(腳本)都需要參數(shù)才能執(zhí)行成功!?。☆愃朴趕hell腳本的位置變量!

拓撲結構如圖-1所示。

image

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命令依次遠程

所有主機都可以免密碼登錄

  1. 部署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
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容