RexDeploy-自動發佈系統

RexDeploy-自動發佈系統

1、簡介

RexDeploy是基於Rex開發的一個自動化發佈平臺。(原生是基於perl腳本構建的,這是初版,後續會搗鼓出python版和web版本支持)html

2、安裝需求

* Rex 
* DBI(perl模塊)
* DBD-mysql (perl模塊)

(運行Linux系統之上)python

一鍵安裝方法:(Centos 5.5 和Centos 6.3測試OK)mysql

unzip  RexDeploy.zip
cd RexDeploy/install
/bin/bash  install.sh

安裝數據庫過程省略,創建autask數據庫,手工導入pre_host_zzb.sql,並按照以下提示作好配置。git

配置: 進入到安裝目錄/data/RexDeployweb

①配置遠程服務器的通用帳號和密碼: Rexfile 其餘配置項,缺省便可。sql

②配置數據庫配置: RexDeploy/lib/Deploy/Db/__module__.pm數據庫

其餘配置請見: RexDeploy/lib/Deploy/Core/__module__.pm 採用默認便可。bash

3、目錄層級解釋

tree -L 2服務器

├── backup  (臨時備份目錄)
├── config    (配置文件目錄)
│   ├── config.ini  (配置經常使用的配置:暫未使用,後續整合)
│   └── ip_lists.ini  (IP分組列表)
├── configuredir (發佈前的配置目錄)
├── lib     (模塊目錄)
│   ├── Common  (自定義公共模塊)
│   ├── Deploy   (自定義發佈模塊)
│   └── Rex (官放手動安裝模塊)
├── logs  (日誌目錄)
├── remotecomdir  (從遠程服務器下載後的目錄)
├── Rexfile  (rex主程序入口)
├── softdir  (發佈前的工程目錄)
└── install (安裝目錄)
    ├── DBD-mysql-4.031.tar.gz
    ├── DBI-1.633.tar.gz
    └── install.sh
14 directories, 6 files
對於使用者只要關注 configuredir  softdir .

4、自動發佈原理圖

輸入圖片說明

5、數據庫表字段約束和解釋

從以上的發佈流程圖也能夠知道,整個發佈的流程是以在數據庫表中的規則爲主,好比工程路徑,啓動腳本等。app

表字段的詳細介紹以下:

CREATE TABLE `pre_host_zzb` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序號',
  `depart_name` varchar(64) NOT NULL COMMENT '分區名稱',
  `server_name` varchar(128) DEFAULT NULL COMMENT '服務器名稱或域名',
  `groupby` varchar(128) DEFAULT NULL COMMENT '分組名稱',
  `network_ip` varchar(15) NOT NULL COMMENT '內網IP',
  `cpu` varchar(64) DEFAULT NULL COMMENT 'CPU',
  `mem` varchar(64) DEFAULT NULL COMMENT '內存',
  `disk` varchar(64) DEFAULT NULL COMMENT '數據盤',
  `pro_type` varchar(64) DEFAULT '' COMMENT '應用類型',
  `config_dir` varchar(164) DEFAULT '' COMMENT '配置目錄',
  `pro_dir` varchar(164) DEFAULT NULL COMMENT '工程目錄',
  `log_dir` varchar(164) DEFAULT NULL COMMENT '日誌路徑',
  `pro_key` varchar(64) DEFAULT NULL COMMENT '進程關鍵詞',
  `pro_init` varchar(100) DEFAULT NULL COMMENT '啓動腳本',
  `pro_port` varchar(255) DEFAULT NULL COMMENT '啓動端口',
  `system_type` varchar(64) DEFAULT NULL COMMENT '操做系統',
  `created_time` datetime DEFAULT NULL COMMENT '建立時間',
  `updated_time` datetime DEFAULT NULL COMMENT '更新記錄的時間',
  `status` varchar(64) DEFAULT '啓用' COMMENT '狀態',
  `note` varchar(128) DEFAULT NULL COMMENT '備註',
  `mask` int(12) DEFAULT NULL COMMENT '惟一標誌位',
  `local_name` varchar(200) DEFAULT NULL COMMENT '識別名稱',
  `app_key` varchar(200) DEFAULT NULL COMMENT '應用惟一關鍵詞',
  `is_deloy_dir` varchar(64) DEFAULT NULL COMMENT '發佈目錄判斷',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8

上面是一臺服務器的基本信息記錄表, 那麼我着重只講和發佈相關的幾個重要字段。其字段以下。

"id","app_key","server_name","network_ip","pro_type","config_dir","pro_dir","pro_key","pro_init","local_name","is_deloy_dir"

app_key: 應用發佈的惟一關鍵詞,不能有重複,不能爲空,若是爲空,則不會加入到自動發佈的系統裏面。

pro_key: 進程關鍵字最好選擇的惟一的關鍵詞,在關閉應用失敗的時候,會經過應用關鍵詞去KILL應用

pro_init: 啓動腳本必須是在/etc/init.d/下面的腳本,否則可能會啓動失敗。

is_deloy_dir: 發佈目錄判斷
=>2表明工程路徑和配置路徑是隔離開來的,好比:cm的工程路徑爲: /data/www/html 配置路徑爲: /data/www/ins_share 
=>1表明 工程路徑和配置路徑是合在一塊兒的好比task-dispatcher,它的工程路徑爲/data/www/apps/task-dispatcher,配置路徑爲: /data/www/apps/task-dispatcher/conf

local_name: 應用發佈初始目錄的名字,好比 cm3系統設置的local_name爲cm,且is_deloy_dir爲2,那麼發佈的初始目錄爲: 工程路徑:$softdir/cm 配置路徑爲: $configure/cm3

6、執行發佈

先上發佈圖:好比我要發佈tpic3 (這次發佈替換class文件)

第一步,進入到工程目錄替換class 輸入圖片說明

第二步,直接發佈 輸入圖片說明

七.自動發佈系統幾大功能點介紹

①查看幫助 rex -T 目前暫時開發瞭如下的模塊和功能 (左邊是任務模塊的名稱,右邊是解釋和示例) 

②查看支持哪些系統的發佈與操做 rex list (app_key是惟一的,一個key表明一個系統) 輸入圖片說明

③發佈多個系統: rex deploy --k='atm jrdt cm3 carbiz3 cm6 carbiz6 rb3 rb6' (以空格間隔)

④下載遠程服務器數據(程序和配置)到本地: rex download --k='atm jrdt cm3 carbiz3 cm6 carbiz6 rb3 rb6' (若是你要下載全部關鍵詞的系統到本地請使用: rex download --k='all') 輸入圖片說明

⑤ 同步本地(遠程download)的程序和配置=>待發布目錄 rex Deploy:Core:syncpro 執行上面的時候,自動將全部待發布的目錄清空,而後將下載目錄的程序同步待發布的目錄中 (能夠設置自動同步數據到發佈目錄執行語句是: rex download --k='all' =>rex Deploy:Core:syncpro ) 輸入圖片說明

⑥檢查數據庫以及遠程服務器的配置 rex check --k='cm6 xampprobot6' (就是覈對數據庫中關於各個配置是否正確,好比遠程服務器的工程目錄/配置目錄/啓動腳本/進程等是否存在) (檢查全部遠程服務器的信息: rex check --k='all' ) 輸入圖片說明

⑦批量執行命令 rex run --k='atm cm3 carbiz3 ' --cmd='uptime' (如查看系統的時間: rex run --k='all' --cmd='date') 輸入圖片說明


這是初版,後續慢慢的改進!

個人項目地址:   https://git.oschina.net/lookingdreamer/RexDeploy_v1

 開箱即用   只要配置數據庫配置就能夠實現自動發佈!

 歡迎你們拍磚!

相關文章
相關標籤/搜索