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