自動化運維ansible的介紹

Ansible的概念:
ansible是新出現的自動化運維工具,基於Python開發,集合了衆多運維工具(puppet、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能。
ansible是基於 paramiko 開發的,並且基於模塊化工作,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。ansible不需要在遠程主機上安裝client/agents,因爲它們是基於ssh來和遠程主機通訊的。ansible目前已經已經被紅帽官方收購,是自動化運維工具中大家認可度最高的,並且上手容易,學習簡單。是每位運維工程師必須掌握的技能之一。

Ansible特點:
1、部署簡單,只需在主控端部署Ansible環境,被控端無需做任何操作。
2、默認使用SSH協議對設備進行管理。
3、有大量常規運維操作模塊,可實現日常絕大部分操作。
4、配置簡單、功能強大、擴展性強。
5、支持API及自定義模塊,可通過Python輕鬆擴展。
6、通過Playbooks(劇本)來定製強大的配置、狀態管理。
7、輕量級,無需在客戶端安裝agent,更新時,只需在操作機上進行一次更新即可。
8、提供一個功能強大、操作性強的Web管理界面和REST API接口——AWX平臺。

Ansible任務執行模式:
Ansible系統由控制主機對被管節點的操作方式可分爲兩類,即ad-hoc(點對點)和playbook:
【1】ad-hoc模式使用單個模塊,支持批量執行單條命令。ad-hoc 命令是一種可以快速輸入的命令,而且不需要保存起來的命令。就相當於bash中的一句話shell。
【2】playbook模式是ansible主要管理方式,也是ansible功能強大的關鍵所在。playbook通過多個task集合完成一類功能,如Web服務的安裝部署、數據庫服務器的批量備份等。可以簡單地把playbook理解爲通過組合多條ad-hoc操作作的配置文件。

Ansible架構:
自動化運維ansible的介紹
【Ansible】:Ansible核心程序。
【Hostinventory】:記錄由Ansible管理的主機信息,包括端口、密碼、ip等。
【Playbooks】:“劇本”YAML格式文件,多個任務定義在一個文件中,定義主機需要調用哪些模塊來完成的功能。
【CoreModules】:核心模塊,主要操作是通過調用核心模塊來完成管理任務。
【CustomModules】:自定義模塊,完成核心模塊無法完成的功能,支持多種語言。
【ConnectionPlugins】:連接插件,Ansible和Host通信使用。

Ansible命令執行過程:
1、加載自己的配置文件 默認/etc/ansible/ansible.cfg
2、查找對應的主機配置文件,找到要執行的主機或者組
3、加載自己對應的模塊文件,如command
4、通過ansible將模塊或命令生成對應的臨時py文件,並將該文件傳輸至遠程服務器的
5、對應執行用戶的家目錄的.ansible/tmp/XXX/XXX.PY文件
6、給文件+x執行
7、執行並返回結果
8、刪除臨時py文件,sleep 0退出

Ansible安裝方式:
ansible安裝常用兩種方式,yum安裝和pip程序安裝
1.yum安裝
yum install ansible epel-release -y
2.pip程序安裝
pip install ansible
【注:如果沒有pip,需要先安裝pip,再安裝ansible。
yum install python-pip && pip install ansible】

Ansible配置文件:
ansible.cfg配置參數:
【1】inventory:這個參數表示資源清單inventory文件的位置,資源清單就是一些Ansible需要連接管理的主機列表。
示例:inventory = /etc/ansible/hosts
【2】library:Ansible的操作動作,無論是本地或遠程,都使用一小段代碼來執行,這小段代碼稱爲模塊,這個library參數就是指向存放Ansible模塊的目錄。
示例:library = /usr/share/ansible
【3】Ansible支持多個目錄方式,只要用冒號(:)隔開就可以,同時也會檢查當前執行playbook位置下的./library目錄。
【4】forks:設置默認情況下Ansible最多能有多少個進程同時工作, 從Ansible 1.3開始,fork數量默認自動設置爲主機數量或者潛在的主機數量,默認設置最多5個進程並行處理。具體需要設置多少個,可以根據控制主機的性能和被管節點的數量來確定,可能是 50或100。默認值5是非常保守的值
示例:forks = 5
【5】sudo_user:這是設置默認執行命令的用戶,也可以在playbook中重新設置這個參數。
示例:sudo_user = root
【6】remote_port:這是指定連接被管節點的管理端口,默認是22。除非設置了特殊的SSH端口,不然這個參數一般是不需要修改的。
示例:remote_port = 22 11221
【7】host_key_checking:這是設置是否檢查SSH主機的密鑰。可以設置爲True或False,關閉後第一次連接沒有提示。
示例:host_key_checking = False
【8】timeout:這是設置SSH連接的超時間隔,單位是秒。
示例:timeout = 60
【9】log_path:Ansible系統默認是不記錄日誌的,如果想把Ansible系統的輸出記錄到日誌文件中,需要設置log_path來指定一個存儲Ansible日誌的文件。
示例:log_path = /var/log/ansible.log
另外需要注意,執行Ansible的用戶需要有寫入日誌的權限,模塊將會調用被管節點的syslog來記錄。

Ansible命令集:
1./usr/bin/ansible # Ansibe AD-Hoc臨時命令執行工具,常用於臨時命令的執行
2./usr/bin/ansible-doc # Ansible 模塊功能查看工具
3./usr/bin/ansible-galaxy #下載/上傳優秀代碼或Roles模塊的官網平臺,基於網絡的
4./usr/bin/ansible-playbook #Ansible定製自動化的任務集編排工具
5./usr/bin/ansible-pull #Ansibl遠程執行命令的工具,拉取配置而非推送配置(使用較少,海量機器時使用,對運維的架構能力要求較高)
6./usr/bin/ansible-vault #Ansible文件加密工具
7./usr/bin/ansible-console #Ansible基於Linux Consoble界面可與用戶交互的命令執行工具

Ansible-doc命令:
ansible-doc -h #顯示幫助信息
ansible-doc -l #獲取模塊信息
ansible-doc -M #指定模塊的路徑
ansible-doc -s #顯示playbook制定模塊的用法
ansible-doc --version #顯示ansible-doc的版本號查看模塊列表:

Ansible命令詳解:
命令格式:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
-a #模塊的參數,如果執行默認COMMAND的模塊,即是命令參數,如:“date”,“pwd”等等module arguments模塊參數
-B #後臺運行超時時間
-C #只是測試一下會改變什麼內容,不會真正去執行;相反,試圖預測一些可能發生的變化
-c #使用的連接類型,默認smart
-D #顯示改變的文件或模板
-e #變量
-f #並行任務數,NUM被指定爲一個整數,默認是5
-h #查看幫助信息
-i #指定庫存主機文件的路徑,默認爲/etc/ansible/hosts
-k #登錄密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證
--private-key=PRIVATE_KEY_FILE #私鑰路徑,使用這個文件來驗證連接
-K --ask-become-pass #請求特權,修改密碼
--ask-sudo-pass #提示密碼使用sudo,sudo表示特權操作
--ask-su-pass #切換密碼
-m #執行模塊的名字,默認使用command模塊,所以如果是隻執行單一命令可以不用-m參數
-M #要執行的模塊的路徑,默認爲/usr/share/ansible/
-o #壓縮輸出,嘗試一切都在一行上輸出。
-P #調查背景工作每隔數秒。需要-b
-R --su-user=SU_USER #指定su的用戶,默認是root用戶
-s #用sudo命令
-S #用su命令
-t #將日誌內容保存在該輸出目錄,結果保存在一個文件中在每臺主機上。
-T #指定SSH默認超時時間,默認是10S
-u #遠程用戶,默認是root用戶
-U #sudo到哪個用戶,默認爲root
-v或-vvv或-vvvv #顯示(更)詳細信息
--version #輸出ansible的版本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章