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