Ansible基礎
ansible是一款自動化運維工具,基于Python開發,實現了批量系統配置、批量程序部署、批量運行命令等功能。ansible是基于模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架。
Ansible架構簡介
ansible的核心就是ansible平臺,ansible是高度模塊化的, core Modules是他的核心模塊,是ansible自帶的模塊, 能完成一些最常見的系統管理配置等相關功能的,接著 custom modules,叫做自定義模塊。支持大量常見語言 做二次開發額外的模塊。架構中還有一塊就是plugins 模塊是用來完成系統管理與配置的任務的,如果想使ansible 平臺本身更強大,就需要不斷加入插件。plugins中有一個 連接插件很重要,ansible基于此插件來連接控制各被管理主機。 ssh是連接插件中最核心的部分,另外也可以拓展為其他協議用于 連接插件。接著,還有一個Host Inventory模塊被稱為主機清單 ,用來記錄被管理的主機。當要管理主機時,就使用 connection plugin去連接被管理主機,接著調用相關的模塊 進行管理。而playbook模塊就像是一個劇本,管理員可以事先 將要執行的操作一條一條寫入劇本,當要執行時,ansible 只要讀取playbook中的編排再調用相關模塊控制主機即可。
Ansible特性
-
模塊化:調用特定的模塊,實現相應功能。
-
agentless:部署簡單,被管控端無需安裝客戶端。
-
no server:無服務器端,使用時直接運行命令即可。
-
yaml,not code:使用yaml語言(一種標記語言,多采用key:value的形式)定制劇本playbook。
-
支持主從模式。
-
基于SSH連接管理被管控端。
Ansible安裝與簡單應用
1.實驗環境準備
此次示例采用centos7系統,在epel源中自帶了ansible的相關安裝文件,所以直接在控制端的主機上采用yum安裝即可。示例部署非常簡單,控制端IP為192.168.1.67,被控制端IP分別為.68、.69、.70。
2.簡單應用
ansible通過ssh實現配置管理、應用部署、任務執行等功能,因此,需要事先配置ansible端能基于密鑰認證的方式聯系各被管理節點。此處不再贅述。最終需要能實現主機節點間無需輸入密碼即可訪問。
另外需要定義主機清單,如下:
#cp /etc/ansible/hosts{,.bak} #vim /etc/ansible/hosts #將原文件中的內容全部刪除 [websrvs] 192.168.1.68 192.168.1.69 192.168.1.70
接著可以進行初步測試,直接運行命令測試,
標準的ansible啟用命令為: ansible <host-pattern> [-f forks] [-m module_name] [-a args] -m module:默認為command 查看ansible各模塊的相關信息及可用參數命令為: ansible-doc: -l, --list 顯示當前ansible支持的模塊 -s, --snippet 跟模塊名,顯示模塊可用args參數。
使用ping模塊進行最簡單的測試,看各節點是否在線:
3.常用模塊使用示例
-
commond模塊:
一般不跟參數,直接給出命令指定的命令會在所選的所有的節點上執行。命令并不是通過shell執行的,所以并不
能使用$HOME等環境變量和一些操作符(<,>,|,&)。shell模塊支持環境變量和操作符。 -
user模塊:創建用戶
-
group模塊:修改組id
-
service模塊:管理遠程節點的服務
-
copy模塊:將本地文件復制到遠程路徑下。
-
shell模塊:
像command模塊那樣在遠程節點執行命令,但shell模塊再遠程節點是通過shell環境
(/bin/bash)執行命令的,該模塊也可以執行一個shell腳本,但該腳本必須在遠程節點上存在。 -
script模塊:
-a選項直接跟一個本地腳本的絕對路徑,腳本的參數以空格隔開。該模塊首先將指定的腳本傳到遠程節點上,然后在遠程節點的shell環
境下執行該腳本。
原創文章,作者:Net21_charles,如若轉載,請注明出處:http://www.www58058.com/37985