SSHKitを実際に使ってみて理解する
Capistrano/sshkitを紹介します。
https://github.com/capistrano/sshkit
SSHKitはリモートサーバーに対してコマンドを実行するためのツールキットです。
CapistranoやCapistranoプラグインではSSHKitが使われています。
インストール
1 | gem install sshkit |
コマンドのサンプル
実際に使ってみて理解していきます。
使うには、sshkitをロードする必要があります。
1 | require 'sshkit' |
ホスト名を取得する
まずはログインしてホスト名を取得してみましょう。
1 | on ['deploy@example.com’] do |host| |
on メソッドに対象のサーバーとブロックを渡します。
対象のサーバーは複数設定することも可能です。
ブロックにはサーバー上で実行するコマンドを設定します。captureメソッドは渡された引数をコマンドとして実行し、結果をログに出力します。
特定のユーザーでコマンドを実行する
特定のユーザーでコマンドを実行する場合は、asメソッドで指定します。
1 | on ['example.com'] do |host| |
特定のディレクトリを指定する
特定のディレクトリを指定する場合は、withinメソッドを指定します。
1 | on ['deploy@example.com'] do |host| |
/var/log で head -n5 messages を実行します。
環境変数を指定する
withメソッドで環境変数を指定することができます。
1 | on hosts do |host| |
rack_envに:test を設定しています。
ファイルをチェックして存在すればメッセージを表示、なければファイルを作成する
1 | on ['deploy@example.com'] do |host| |
testメソッドでファイルをチェックし、executeメソッドでtouchコマンドを実行しています。
ファイルをアップロードする
ファイルをアップロードすることもできます。
1 | on ['deploy@example.com'] do |host| |
第1引数がローカルのファイルのパス、第2引数がサーバーに配置するファイルのパスです。
また、recursiveオプションをtrueに設定することでディレクトリをアップロードすることもできます。
1 | on hosts do |host| |
ローカルで実行する
ローカルで実行することもできます。
1 | run_locally do |
Rakeタスクで利用する
RakeタスクでSSHKitのDSLを使うこともできます。
この仕組みを利用してCapistranoのプラグインは作成されています。
1 | require 'sshkit' |
サンプルがこちらにたくさんあるので、参考になると思います。
https://github.com/capistrano/sshkit/blob/master/EXAMPLES.md