デプロイツールAltaxをバージョン2に更新しました
Capistrano的なPHP製デプロイツールAltaxをバージョン1→2としてアップデートしました。
https://github.com/kohkimakimoto/altax
このソフトウェアはPHPで記述したタスクを、複数のリモートサーバに対して実行します。 サーバ接続には鍵認証のSSHを使用し、並列に実行します。 動作に必要なファイルは1つだけで、PHPの実行環境があれば簡単に導入できます。
Version1からの変更点
- 実装をSymfony Componentsを使って大幅に変更、再構成。
- pharによる実行ファイル形式の配布をサポート。
- デフォルトの読み込み設定ファイルのパスを変更。
- クラスベースのタスク定義をサポート。
- ログ出力機能を追加。
- SSH接続の実装部分をsshコマンドからphpseclibに変更。
インストール
ドキュメントはまだ更新してないので、ざっくり最初の使い方だけ記述しておきます。実行にはPHP5.3以上が必要です。またWindowsでは多分動きません。
インストールは以下のコマンドを実行するだけです。
$ curl https://raw.github.com/kohkimakimoto/altax/master/installer.sh | sudo bash -s system v2
/usr/local/bin/altax
に実行ファイルがインストールされます。
手動で好きな場所にインストールしたい場合は、以下のように直接altax.phar
を持ってきて配置すればいいでしょう。
$ wget https://github.com/kohkimakimoto/altax/raw/master/altax.phar
$ chmod 755 altax.phar
$ mv altax.phar /path/to/install_dir/altax
とりあえず実行する
なにも付けずにコマンドを叩くと、バージョン情報やサブコマンド一覧が表示されます
$ altax
設定ファイルを作成する
$ altax init
initコマンドを実行するとカレントディレクトリに以下のような構造の.altax
ディレクトリを作成します。
.altax/
config.php # メインの設定ファイル。
hosts.php # 接続先ホストを記述する用のファイル
tasks/ # タスク定義を置くディレクトリ
hellow.php.sample # サンプルのタスク定義。
必須なのはconfig.php
だけで、その他のファイルは必要に応じてconfig.php
から読み込んで使用します(今回は使いません)。
config.phpはコメントアウトされているところを除くと以下のようになっています。
host('127.0.0.1', array('web', 'localhost'));
desc('This is a sample task.');
task('sample',array('roles' => 'web'), function($host, $args){
run('echo Hellow World!');
});
host関数で接続先ホストの設定、taskで実行タスクを定義しています。このサンプルではローカルホストに接続しにいきます。 接続先ホストはパスワードなしの鍵認証でSSHできるようにしておく必要があります。
再びaltax
コマンドをサブコマンドなしで実行します。
$ altax
Available commands:
config Show configurations
help Displays help for a command
init Create default configuration directory in the current directory
list Lists commands
sample This is a sample task.
Available commandsにsampleタスクが表示されます。実行してみましょう。
$ altax sample
Altax version 2.1.0
Starting altax process
- Starting task sample
Found 1 target hosts: 127.0.0.1
- Running sample at 127.0.0.1
Hellow World!
Completed task sample
以上のようにHellow World!がechoコマンドで実行されます。
詳細な使い方について
今回はここまでです。詳細は後日、ドキュメントかブログにまとめようと思っています。
メモ) Symfony Componentsが激しく便利な件
今回コマンドラインのプログラムを書き直したわけですが、その際に利用したSymfony Componentsが激しく便利でした。
あたりを使ったわけですが、 今までコマンドラインオプションをパースする処理をgetopt関数使ってシコシコ書いていたりしたのが、すんごく簡単に書けるようになります。 出力メッセージに色つけたり、ディレクトリからファイル一覧を持ってきたりとかもすんごく楽。
みんなも使ったほうがいいですヽ(^o^)丿。
メモ) だれか知ってたら教えて
SSHでコマンド実行が正常にできることのテストをtravis-ciでやるのってどうすんだと。 わからん。とりあえず、このあとCapistranoのテストコード見に行ってきますよ、と。