Python
Jenkins
jboss
fabric

fabricを使用したjbossへのデプロイスクリプト

More than 1 year has passed since last update.

fabricによるjbossへのデプロイ用スクリプト。
ビルド後の成果物が作られていることを前提とする。

スクリプト

from fabric.api import run, env, put

env.use_ssh_config = True

def deploy():
    put("./trunk/project/build/libs/app.war", "/home/ec2-user/app.war")
    run("sudo chown jboss:jboss /home/ec2-user/app.war")
    run("sudo /opt/jboss7/bin/./jboss-cli.sh -c --command='undeploy app.war'")
    run("sudo /opt/jboss7/bin/./jboss-cli.sh -c --command='deploy /home/ec2-user/app.war'")
    run("sudo /etc/init.d/jboss restart")

実行

fab -H {ホスト名} deploy

おまけ

踏む台サーバを使用する方法。
引数に指定して使用する方法とconfigファイルに記述して使用する方法の2つを紹介。

引数で指定

.ssh/configに各サーバの設定を記述する。

Host           proxy                         #踏み台サーバの名前
HostName       XXX.XXX.XXX.XXX               #踏み台サーバのホスト
User           deploy                        #SSH接続のユーザー名
IdentityFile   /home/ec2-user/.ssh/key.pem   #SSH接続の鍵ファイル

Host           remote                        #接続先の名前
HostName       XXX.XXX.XXX.XXX               #接続先のホスト
User           deploy                        #SSH接続のユーザー名
IdentityFile   /home/ec2-user/.ssh/key.pem   #SSH接続の鍵ファイル

「-g」オプションで踏み台サーバのホスト名を指定してコマンドを実行する。

fab -H remote -g proxy deploy

configに指定

下記のように直接configに指定する。
```
Host proxy #踏み台サーバの名前
HostName XXX.XXX.XXX.XXX #踏み台サーバのホスト
User deploy #SSH接続のユーザー名
IdentityFile /home/ec2-user/.ssh/key.pem #SSH接続の鍵ファイル

Host remote #接続先の名前
HostName XXX.XXX.XXX.XXX #接続先のホスト
User deploy #SSH接続のユーザー名
IdentityFile /home/ec2-user/.ssh/key.pem #SSH接続の鍵ファイル
ProxyCommand ssh -W %h:%p proxy #踏み台サーバを指定
```

ホスト名を指定してコマンドを実行する。

fab -H remote deploy