Linux里面ansible作用是什么?
Linux里面ansible作用是什么?
Ansible是一款簡單的運(yùn)維自動化工具,只需要使用ssh協(xié)議連接就可以來進(jìn)行系統(tǒng)管理,自動化執(zhí)行命令,部署等任務(wù)。
Ansible的優(yōu)點(diǎn)
不需要安裝客戶端,不需要運(yùn)行服務(wù)
使用python開發(fā)的一套自動執(zhí)行任務(wù)的模塊
playbook采用yaml配置,結(jié)構(gòu)清晰
Ansible的組成結(jié)構(gòu)
Ansible:核心命令工具,一次性或臨時性執(zhí)行的操作都由該工具執(zhí)行
Ansible playbook:任務(wù)劇本(又稱任務(wù)集),編排定義Ansible任務(wù)集的配置文件,由Ansible執(zhí)行,格式是yaml
Inventory:Ansible管理的主機(jī),在/etc/ansible/hosts中配置
Modules:Ansible執(zhí)行命令的功能模塊,Ansible2.3版本為止,共有1039個模塊。
還可以自定義模塊。
Plugins:插件,模塊功能的補(bǔ)充,常有連接類型插件,循環(huán)插件,變量插件,過濾插件,插件功能用的較少。
API:提供給第三方程序調(diào)用的應(yīng)用程序編程接口。
Linux里面ansible -a命令作用是什么?
1. ansible命令的使用說明ansible 主機(jī)或組-m 模塊名-a 百科\’模塊參數(shù)\’ ansible參數(shù)表示調(diào)用什么模塊,使用模塊的那些參數(shù)? 主機(jī)和組,是在/etc/ansible/hosts 里進(jìn)行指定的部分,當(dāng)然動態(tài)Inventory 使用的是腳本從外部應(yīng)用里獲取的主機(jī);? 模塊名,可以通過ansible-doc -l 查看目前安裝的模塊,默認(rèn)不指定時,使用的是command模塊,具體可以查看/etc/ansible/ansible.cfg 的“#module_name = command ” 部分,默認(rèn)模塊可以在該配置文件中進(jìn)行修改;? 模塊參數(shù),可以通過 “ansible-doc -s 模塊名” 查看具體的用法及后面的參數(shù);? ansible參數(shù),可以通過ansible命令的幫助信息里查看到,這里有很多參數(shù)可以供選擇,如是否需要輸入密碼、是否sudo等。
Ansible-基本概述
為什么要自動化運(yùn)維 我們以 10 臺機(jī)器部署 Nginx 為例。部署步驟如下: 1、通過 ssh 登錄一臺機(jī)器; 2、yum install -y nginx 或者 獲取安裝包自行編譯安裝; 3、配置 Nginx 4、啟動 Nginx ,如有必要加入開機(jī)自啟動; 5、退出登錄 上面步驟重復(fù) 10 次,即可完成我們的部署要求。
痛點(diǎn): 1、重復(fù)操作頻繁,增加了人工成本和后續(xù)維護(hù)成本; 2、機(jī)器太多時,容易落下某些機(jī)器且未操作,進(jìn)而產(chǎn)生后續(xù)影響; 3、人工頻繁操作時可能有操作步驟不完整的情況,造成該機(jī)器和其他機(jī)器狀態(tài)不一致。
我們還是以 10 臺機(jī)器部署 Nginx 為例。部署步驟如下: 1、在控制機(jī)或者稱為管理機(jī)的機(jī)器上寫好相關(guān)腳本?!府?dāng)然該腳本我們是測試通過的,腳本中包括安裝、配置、啟動等等」 2、將寫好的腳本從控制機(jī)推送到受控機(jī); 3、在受控機(jī)執(zhí)行相關(guān)腳本,根據(jù)腳本部署我們需要的 Nginx。 好處 1、減少了重復(fù)操作,提高了工作效率; 2、減小了出錯幾率,提高了準(zhǔn)確率; 3、所有機(jī)器狀態(tài)一致,降低了后續(xù)維護(hù)成本。
軟件安裝部署 配置同步 代碼變更 命令執(zhí)行 任務(wù)執(zhí)行 Ansible 是基于Python開發(fā),**了眾多運(yùn)維工具(puppet、cfengine、chef、func、fabric)的優(yōu)點(diǎn),實現(xiàn)了批量系統(tǒng)配置、批量程序部署、批量運(yùn)行命令等功能的自動化管理工具。 Ansible 是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是 Ansible 所運(yùn)行的模塊,Ansible 只是提供一種框架。
進(jìn)而能減少我們的重復(fù)操作,提高工作效率。 Ansible 不需要在遠(yuǎn)程主機(jī)上安裝 client/agents,因為它們是基于 SSH 來和遠(yuǎn)程主機(jī)通訊的。 Ansible 目前已經(jīng)已經(jīng)被紅帽**收購,是自動化運(yùn)維工具中大家認(rèn)可度**的,并且上手容易,學(xué)習(xí)簡單。
是每位運(yùn)維工程師必須掌握的技能之一。 1、批量執(zhí)行遠(yuǎn)程命令:可以對 N 臺主機(jī)同時進(jìn)行命令的執(zhí)行; 2、批量配置軟件服務(wù):可以用自動化的方式管理配置和服務(wù); 3、實現(xiàn)軟件開發(fā)功能:例如 jumpserver 底層使用 Ansible 來實現(xiàn)自動化管理; 4、編排高級的 IT 任務(wù):Ansible 的 Playbooks 是一門編程語言,可以用來描繪一套 IT 架構(gòu)。 1、部署簡單,只需在主控端部署 Ansible 環(huán)境,被控端無需做任何操作; 2、安全可靠,默認(rèn)使用 SSH 協(xié)議對被控端進(jìn)行管理; 3、有大量的常規(guī)運(yùn)維操作模塊,可實現(xiàn)日常絕大部分操作; 4、配置簡單、功能強(qiáng)大、擴(kuò)展性強(qiáng); 5、支持 API 及自定義模塊,可通過 Python 輕松擴(kuò)展; 6、通過 Playbooks 來定制強(qiáng)大的配置、狀態(tài)管理; 7、輕量級,無需在客戶端安裝 Agent,更新時只需在操作機(jī)上進(jìn)行一次更新即可。
模塊說明如下: Ansible:Ansible 核心程序。 Host Inventory:記錄由 Ansible 管理的主機(jī)信息清單,包括端口、密碼、IP 等。 Playbooks:“劇本” YAML 格式文件,多個任務(wù)定義在一個文件中,定義主機(jī)需要調(diào)用哪些模塊來完成的功能。 Core Modules:核心模塊,主要操作是通過調(diào)用核心模塊來完成管理任務(wù)。
Custom Modules:自定義模塊,完成核心模塊無法完成的功能,支持多種語言。 Connection Plugins:連接插件,Ansible 和 Host 通信使用 Ansible 控制主機(jī)對被管節(jié)點(diǎn)的操作方式可分為兩類,即 ad-hoc 和 playbook: ad-hoc 模式(點(diǎn)對點(diǎn)模式) 使用單個模塊,支持批量執(zhí)行單條命令。ad-hoc 命令是一種可以快速輸入的命令,而且不需要保存起來的命令。 就相當(dāng)于 bash 中的一句 shell。
playbook 模式(劇本模式) 是 Ansible 主要管理方式,也是 Ansible 功能強(qiáng)大的關(guān)鍵所在。 playbook 通過多個 tasks **完成一類功能 ,如 Web 服務(wù)的安裝部署、數(shù)據(jù)庫服務(wù)器的批量備份等。可以簡單地把 playbook 理解為通過組合多條 ad-hoc 操作的配置文件。 簡單理解就是:Ansible 在運(yùn)行時,首先讀取 ansible.cfg 中的配置,根據(jù)規(guī)則獲取 Inventory 中的管理主機(jī)列表,并行的在這些主機(jī)中執(zhí)行配置的任務(wù),**等待執(zhí)行返回的結(jié)果。