基礎知識介紹
1 什麼是ansiblepython
ansible 是一種自動化運維工具 , 基於Python研發 。 糅合了衆多老牌運維工具的優勢實現了批量操做系統配置、批量部署、批量運行命令等功能。 僅需在管理工做站上安裝 ansible 程序配置被管控主機的 IP 信息,被管控的主機無客戶端。 ansible 應用程序存在於 epel( 第三方社區 ) 源,依賴於不少 python 組件。nginx
二、優勢和特性shell
(1)、agentless:不須要在被管控主機上安裝任何客戶端;api
(2)、ssh by default:基於SSH工做;tomcat
(3)、no server:無服務器端,使用時直接運行命令便可;服務器
(4)、modules in any languages:模塊化涉及,基於模塊工做,可以使用任意語言開發自定義模塊;app
(5)、yaml,not code:使用yaml語言定製劇本playbook,只須要告訴被監控端的指望狀態,不須要關注過程;less
(6) 具備冪等性,不會重複執行相同的指令。例如不會重複安裝軟件 。運維
3. 配置 文件:ssh
(1)ansible 應用程序的 主配置文件:/etc/ansible/ansible.cfg
(2) Host定義管控主機 :/etc/ansible/hosts
4.爲什麼使用。
1> 層級管理iplists.批量執行命令時,不用再花時間準備ip列表,以及進行ip處理。
2> 比起手動編寫腳本,不須要手動打印輸出,及判斷返回值。
3 > 按分組作支付系統初始化,配置管理。
5.安裝方式
配置fedora epel 源後yum install -y ansible
6.ansible 命令基本格式
ansible <host-pattern> [-m module_name] [-a args]
<host-pattern> |
指明須要操做的主機,以模式形式表示或者直接給定 IP ,必須事先定義在/etc/ansible/hosts文件中; all 設置全部 |
[-m module_name] |
使用何種模塊進行操做,全部的操做都須要經過模塊來指定 |
[-a args] |
指明模塊專用參數; args 通常爲 key=value 格式 |
如 ansible all -m shell -a "uptime"
獲取全部主機已運行時間。
詳細配置過程
一 > 整合zodiac ansible
安裝ansible
編寫shell腳本從 借貸寶 zodiac 運維管理系統 api接口獲取當前 appid 與ip對應關係。
並轉化爲ansible inventory 主機組配置文件格式。
腳本會從api獲取到全部appid中 狀態爲"online"的 iplist。
配置cron自動執行,使ansible inventory與 zodiac中appid信息一致。
腳本執行後會生成 分組策略inventory文件(文件路徑/etc/ansible/hosts)
從 zodiac自動同步a.b.c.d 層級結構。額外再加一級idc爲五級結構。調用父主機組能夠把下屬子主機組IP調出來。
結構相似 jdb.paycenter.payapi.tomcat.xy 表明 支付中心- 支付網關-tomcat-曉月 全部機器
備註:
使用[]聲明一個組名
使用:children 關鍵字 聲明下屬的子組
第一層 公司名稱
[jdb]
jdb.paycenter
jdb.paycenter-beta (支付beta環境)
.......
第二層 公司名稱-部門小組
[jdb.paycenter:children]
jdb.paycenter.acmcore
jdb.paycenter.actcore
........
第三層 公司名稱-部門小組-業務系統
[jdb.paycenter.precard:children]
jdb.paycenter.precard.nginx
jdb.paycenter.precard.tomcat
第四層 公司名稱-部門小組-業務系統-應用種類
jdb.paycenter.precard.nginx:children]
jdb.paycenter.precard.nginx.xy
jdb.paycenter.precard.nginx.yz
第五層 公司名稱-部門小組-業務系統-應用種類-idc信息
[jdb.paycenter.precard.nginx.xy]
100.95.0.55
100.95.0.58
.......
[jdb.paycenter.precard.nginx.yz]
100.95.0.55
100.95.0.58
能夠結合經常使用模塊,批量執行系統操做
模塊名:ping 不解釋
如 ansible all -m ping (ping模塊不須要加-a 指定參數)
解釋:探測已配置在/etc/ansible/hosts裏全部主機是否存活
模塊名:setup 採集主機信息
如 ansible jdb.paycenter -m setup -a 'filter=ansible_processor'
解釋:獲取支付中心全部主機CPU核數。
模塊名 shell/cmd/raw 三個模塊均可執行shell命令 (區別:cmd模塊爲基本命令執行模塊,不支持變量,shell模塊 爲/bin/sh環境下執行。raw模塊可以使用管道"|")
如 ansible jdb.paycenter.payorder.nginx -m shell -a 'hostname'
解釋:獲取全部支付中心-訂單系統 nginx主機名。
模塊名 script 在每一個遠程主機執行本地腳本
ansible jdb.paycenter.*.tomcat -m script -a '/opt/test.sh'
解釋:在支付中心-全部tomcat機器 執行本地/opt/test.sh 的腳本。
模塊名 copy 文件拷貝到遠程主機
ansible jdb.paycenter.payorder.nginx[1-5].xy -m copy -a 'src=/etc/resolv.conf dest=/etc/resolv.conf'
解釋:把本地/etc/resolv.conf 拷貝到 支付訂單中心-nginx【1-5】曉月全部機器對應位置。
ps ;主機組名支持正則匹配。
ansible jdb.paycenter.*.*.xy "free -g"
在支付中心-全部idc爲曉月機器 統計內存使用。
ansible 100.93.1.8* -a "ntpdate xxip"
批量同步100.93.1.80~89 的系統時間。
按機器分組,編寫playbook, 作狀態統一。
支付運維 部分play-book 解析
1> 初始密碼,公鑰,目錄權限 配置統一 執行效果
2> falcon監控客戶端配置管理
完成如下功能:
1 未安裝falcon-agent 主機自動安裝falcon-agent,並啓動。
2 已安裝falcon-agent,但未啓動進程的主機,自動啓動進程。
3 rsync falcon插件目錄到全部機器。
4 發現主機存在多falcon-agent進程的異常狀態,殺掉全部falcon-agent 進程並重啓服務。
二> 配置jenkins,整合jenkins ansible。
部署jenkins。以管理員登入後,進入插件管理,安裝ansible_plugin插件。
把每一個運維平常週期性工做(如 falcon,elk客戶端部署,密碼,公鑰,文件權限,配置統一,日誌備份,切割,系統校時相關任務的執行與檢測等)
配置成單獨jenkins project。指定已寫好的ansible-playbook路徑。
並在「構建觸發器「欄選擇 Build periodically 配置計劃任務。讓每一個ansible 劇本 自動運行
3> 配置郵件通知
配置
Editable Email Notification
|
平常運維任務 構建後,將結果郵件通知給運維支付組每一個成員。
平常運維 ansible-playbook 任務構建後效果
如此便實現了一個 輕量級的支付系統配置管理平臺。