基于ssh和wsadmin的远程websphere部署

来源:互联网 发布:数据库培训中心 编辑:程序博客网 时间:2024/05/24 05:59

在jenkins的自动化部署过程中,由于一些实际的情况导致websphere deployment的插件不好用,具体体现在:

1. 需要配置烦人的ssl证书,而且如果目标机器的证书和机器名不一致,会失败

2.会占用大量的自动化部署机器的资源,它本质是在部署机器上消耗资源来部署到目标机器上的


为了解决这个问题:

采用远程部署文件传送和远程部署的模式,基于的技术基础是ssh, wsadmin这两个技术(有人说wsadmin不好用,没有有效的输出,其实是误解,已经足够完善)


实现的步骤为:

1. 使用 SSH publisher的功能,对应的插件为:Publish Over SSH, 将本地的部署文件传送到目标机器的指定路径下

2. 使用 ssh remote execute command功能呢, 对应的插件为: SSH plugin, 在远程的websphere目标机器上执行 wsadmin的客户端脚本程序


对应的wsadmin执行脚本见附件  deploy.jacl


调用方法为:

uninstall 步骤->

sh /{your websphere install path}/AppServer/bin/wsadmin.sh -conntype SOAP uninstall {ear path} {application name} {ear file name} {target cell} {target node} {target server} {binding virtual host} -host {host}  -port {port} -user  {user} -passsword {password} -lang jacl -javaoption -f deploy.jacl

install 步骤->

sh /{your websphere install path}/AppServer/bin/wsadmin.sh -conntype SOAP install {ear path} {application name} {ear file name} {target cell} {target node} {target server} {binding virtual host} -host {host}  -port {port} -user  {user} -passsword {password} -lang jacl -javaoption -f deploy.jacl



deploy.jacl:



# @author Michiel Rook <info@touchdownconsulting.nl>


proc sleepDelay { secs } {
        set tstart [clock format [clock seconds] -format "%H:%M:%S"]
        package require java
        set temp [catch {
                java::call java.lang.Thread sleep [expr $secs*1000]
        }]
        set tdone [clock format [clock seconds] -format "%H:%M:%S"]
        puts "sleepDelay seconds=$secs start=$tstart done=$tdone"
}




set action      [lindex $argv 0]
set workspace   [lindex $argv 1]
set appname     [lindex $argv 2]
set earfile     [lindex $argv 3]


set cell [lindex $argv 4]
set node [lindex $argv 5]
set server [lindex $argv 6]
set vhost       [lindex $argv 7]


puts "installOrUpdate: Deployment ear=$earfile app=$appname action=$action ws=$workspace"
puts "admin: cell=$cell node=$node server=$server"


if {$action == "install"} {
$AdminApp install "$workspace/$earfile" "-node $node -cell $cell -server $server -verbose -defaultbinding.virtual.host $vhost -usedefaultbindings"

$AdminConfig save

set ready false
set retries 0

while {$retries < 20} {
incr retries
set ready [$AdminApp isAppReady $appname]
puts "AdminApp isAppReady: $ready ($retries)"

if {$ready} { break }

sleepDelay 5
}

set appManager [$AdminControl queryNames node=$node,cell=$cell,type=ApplicationManager,process=$server,*]

$AdminControl invoke $appManager startApplication $appname

$AdminConfig save
} elseif {$action == "uninstall"} {
set appManager [$AdminControl queryNames cell=$cell,node=$node,type=ApplicationManager,process=$server,*]


catch { $AdminControl invoke $appManager stopApplication $appname } result


$AdminConfig save

$AdminApp uninstall $appname


$AdminConfig save
}


原创粉丝点击