ansible + jenkins + 郵件 ---轉

 
轉至元數據結尾
 
轉至元數據起始
 

基礎知識介紹

 

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 任務構建後效果

 

 

如此便實現了一個 輕量級的支付系統配置管理平臺。

相關文章
相關標籤/搜索