Vol2です〜
Fabric連載第2回です。
Vol01で結構沢山書いてしまったので書く事がなくなりつつあるので、役に立つかもしれないタスク等を公開してみようとおもいます。
今回のお題は tomcatの起動完了を監視する です。
では早速いってみましょう。
Fabricでtomcatの起動完了を待つ
まずはタスクのサンプルです。
#coding:utf-8 import os, time from fabric.api import env, run, sudo, local, put, cd from fabric.decorators import task from fabric.utils import abort from fabric.colors import red, green, yellow, cyan env.warn_only = True @task def monitorTomcatStarted(): INTERVAL = 1 RETRY = 60 count = 1 print cyan('tomcatの起動を{0}秒間隔で{1}回まで監視します。'.format(INTERVAL, RETRY)) while 1: if count == RETRY: print red('[{0}回目] tomcatはHTTPステータス200で起動しませんでした。'.format(count)) break result = run('/usr/bin/curl --silent --show-error --connect-timeout 1 -I \'http://localhost:8080\' | egrep \'HTTP/1.1\' | awk \'{print $2}\'', quiet = True) if result.isdigit(): if int(result) == 200: print green('[{0}回目] tomcatはHTTPステータス200で起動しました。'.format(count)) break print yellow('[{0}回目] フロントのHTTPステータスコードは{1}です。起動を待ちます・・'.format(count, result)) else: print yellow('[{0}回目] tomcatに接続できません。message = {1}'.format(count, result)) count += 1 time.sleep(int(INTERVAL))
これを実行すると、以下のようになります。
colorメソッドで視覚的に状況を把握できるようにしています。
これで起動が完了したかどうか、HTTPステータスコードが200かどうかを判定する事ができます。
何秒監視するかも設定できるようにしました!!
おまけ
Fabricと全く関係無いですが、bannerコマンドについて紹介します。
実行すると以下のように標準出力する事ができます。
$ banner deploy ###### ####### ###### # ####### # # # # # # # # # # # # # # # # # # # # # # # # ##### ###### # # # # # # # # # # # # # # # # # # # # ###### ####### # ####### ####### # $
アスキーアートのような出力が可能になるコマンドです。
Macの場合は縦に横向きに出力されてしまいますが、CentOSの場合は↑のようになります。
CentOSの場合は標準でインストールされていないので、makeしてインストールしてみましょう。
まず以下のページを開きます。
Cedar Solutions - Utilities
次に、↓のリンク部分からtarをダウンロードします。
banner (source):
以降は以下のコマンドでインストールできます。
wget http://software.cedar-solutions.com/ftp/software/banner-1.3.2.tar.gz tar zxvf banner-1.3.2.tar.gz cd banner-1.3.2 ./configure make sudo make install
これで後は「banner hoge」などと入力するとAAみたいのが出力できます。
注意点として日本語に未対応な点です。
あと、長い文字列を入力すると改行されてしまうので注意して下さい。