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

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

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

ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。 ansible是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。主要包括:(1) 連接插件connection plugins:負責和被監控端實現通信;(2) host inventory:指定操作的主機,是一個配置文件裏面定義監控的主機;(3) 各種模塊核心模塊、command模塊、自定義模塊;(4) 藉助於插件完成記錄日誌郵件等功能;playbook:劇本執行多個任務時,非必需可以讓節點一次性運行多個任務。

如何部署ansible ?1.準備如表-1所示的實驗環境,操作系統爲RHEL8,配置主機名稱、IP地址、YUM源。

ansible原理:

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

ansible通過ssh遠程被管理主機,將控制端的模塊(腳本)或命令傳輸到被管理主機;

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

最後ansible退出ssh遠程。

絕大多數模塊(腳本)都需要參數才能執行成功!!!類似於shell腳本的位置變量!

拓撲結構如圖-1所示。

2.步驟一:準備基礎環境

控制節點要求:

· 域名解析(爲了方便後期操作,可以不做)

· 配置SSH密鑰(ansible是基於ssh實現遠程控制)

· 安裝Ansible軟件

1)Control控制節點

修改/etc/hosts,在文件中手動添加如下內容,修改該文件的目的是做域名解析。
1. [root@control ~]# vim  /etc/hosts        #修改文件,手動添加如下內容(不要刪除文件原來的內容)
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密鑰實現免密碼登錄(非常重要)

Ansible是基於SSH遠程的原理實現遠程控制,如果控制端主機無法免密登錄被管理端主機,後續的所有試驗都會失敗!!

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對應的密碼

如何驗證?

警告:如果有任何一臺主機遠程還需要密碼,就不要往下繼續操作,後面實驗都會失敗!!!

[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   *

被控制節點要求:· Ansible默認通過SSH協議管理機器· 被管理主機要開啓SSH服務,並允許控制主機登錄· 被管理主機需要安裝有Python步驟二:修改配置文件****主配置文件說明:主配置文件ansible.cfg(主配置文件的內容可以參考/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(清單、財產清單)
6. #forks = 5                                    #ssh併發數量
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爲關鍵字),不需要也可以不創建嵌套組
11. webserver                  #嵌套組可以在組中包含其他組
12. database
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章