初めてのCapistrano

投稿者: | 2021年1月12日

こんにちは!

GMOアドマーケティング入社2年目のH.Kです。

私は大学院で機械学習を触っていました。

入社して、「はい、これ最適化して」みたいな世界を想像してたのですが、実際は泥臭い作業が色々と。

とりあえずログに関するタスクを振ってもらえるようお願いしました。

そこでログの集計ミスの修正処理にCapistranoを使用しました。

理解のため手元で0から作ってみたので、インストールから実行するまでにやったことを書いていこうと思います。


Capistranoとは

Capistranoは複数のサーバーでスクリプトを実行するためのツールです。

主にデプロイの自動化で使われています。

弊社でもデプロイツールとしてCapistranoを使用しています。

私は、弊社プロダクトReeMoのログを複数サーバーで処理するためにCapistranoを使用しました。


Capistranoを使えるようにする

CapistranoはRubyで書かれており、Rubyが必要です。Rubyのライブラリ管理ツールBundlerを使用してCapistranoを導入しました。

まずはCapistranoで使用するディレクトリにGemfileを用意します。

そしてそのディレクトリで bundle install でインストールできます。

その後 bundle exec cap install をするとファイル群が生成されます。


Capistranoをローカルで実行する

今回テストのためにローカルで実行したのでそれについて書きます。

生成されたファイル群の、 config/deploy に接続するサーバーの設定を記述したファイルを置きます。

そこにlocal用のファイルを追加します。

そして config/deploy.rb に下記を追加します。

その後、Gemfileがあるディレクトリで bundle exec cap local hogehoge:hello_world とすると、 hello world! が表示されます。


Capistarnoをサーバー上で実行する

今回試しにローカルPCでCapistranoのコマンドを叩きサーバー上で実行しました。

先程local用のファイルを置いた場所に、下記設定を書いた test.rb を置きます。

server_name にはssh接続するサーバーの名前を入れます。

そして、 config/deploy.rb を書き換えます。

これで bundle exec cap local hogehoge:testを行うと・・・下記エラーが。

NotImplementedError: OpenSSH keys only supported if ED25519 is available

Gemfileを少し書き換え。

bundle install し直し、再度実行するとサーバー上に test_cap.txtが出来ました!


終わりに

今回はCapistranoを実行するまでを書きました。

デプロイツールと言うと難しそうだと思っていましたが、基本的な仕組みは思っていたよりシンプルですね。


参考リンク
Capistranoで簡単デプロイ
OpenSSH <= 7.8 と knife zero の落とし穴