LoginSignup
5
1

More than 5 years have passed since last update.

capistrano で localhost が対象のときに SSH しないようにする

Posted at

背景

Capistrano は基本的に SSH で対象へ接続し作業するツールであると思う。

が、current -> releases/xxxx の仕組みとかタスクフローとか DSL とか、組み込みの機能をローカルでの作業に役立てたい1こともたまーにある。

単純に SSH 対象を localhost として、例えば

server 'localhost', roles: %w{app}, user: 'me', key: 'mykey'

みたいに書けばリモート同様に使えるのでそれでも良いのだが、微妙に SSH 設定が煩わしい。キーペア配置の必要があるし。

対策

server 'localhost' の時に SSH しないパッチを当てる gem を作った

gem 'capistrano-locally' を入れて、
Capfilerequire 'capistrano/locally' すれば、

こんな感じ ↓ で SSH 設定をしなくてすむ

server 'localhost', roles: %w{app}

それ必要?

正直なところ有用なケースは相当限られるので誰得ライブラリではあるが、
「繰り返し何かの作業をしたい」
keep_releases の指定で古いのを勝手に掃除したい」
「Jenkins にするほどじゃない / Jenkins にできないわけがある」
「ssh 鍵は置けない」
ようなこまごまとした事情がある場合の、気軽に使える作業フレームワークとして。


  1. run_locally すればいいじゃん、ってことではなく deploy のような既存タスクを使いたいこともある、ということ 

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1