GitLab で使用する SSH のポート番号を変更する
映画『STAND BY ME ドラえもん』の「成し遂げプログラム」は人情ものとしてはともかく科学的に疑問が残る…というところから瀬名秀明『小説版ドラえもん のび太と鉄人兵団』 はその点よかった…という話になり、瀬名秀明のロボット SF ものを読み漁る流れになりつつある kagata です。
さて、このほど弊社 Web ソリューション事業部ではバージョン管理ツールとして GitLab を導入しました。GitLab 環境を構築する過程ではまった表題の件について、ここでご紹介しておきます。
前置き:GitLab とは
GitLab とは、Git リポジトリをホスト・管理するためのオープンソースの Web アプリケーションです。Git リポジトリを共有する Web サービスに GitHub というのがありますね。あれのクローンとされるアプリケーションです。
弊社プロジェクトの Git リポジトリをホストする環境を選ぶにあたり、GitHub など他所様の Web サービスを利用すると情報管理に慎重なクライアントが懸念を持たれるかもしれない…という心配がありました。その点、自社で root 権限を持つサーバーマシンに GitHub 相当の環境を構築できるとカタイ感じになりますね(もちろん、しかるべき管理・運用を自前ですることが大前提です!)。
GitLab を導入する際には必要になるミドルウェアがたくさんあります。自力ですべて整えるのはとても骨が折れそうですが、"Omnibus package" という全部入りの RPM パッケージを使えば楽ができます。
Omnibus package を使ったインストール手順はこちらが詳しいです:
設定ファイル gitlab.rb に変更内容を記述する
ということで、本題の SSH ポート番号の変更です。
Omnibus package を使ってインストールした GitLab の設定を変更するには、/etc/gitlab/gitlab.rb
というファイルを用意して設定を書き込んでいきます。
上記の参考記事にもあるとおり、初期設定を集約したファイル default.rb を見て、変更したい箇所を探します。
SSH ポート番号の設定は、どうやらこちらのようです。
default['gitlab']['gitlab-rails']['gitlab_shell_ssh_port'] = nil
上記参考記事のほかさまざまなカスタマイズ事例を見ると、/etc/gitlab/gitlab.rb
で設定を上書きするには、どうやらこの配列の2番目のインデックスを名前にした配列に設定値を入れる記述をすればいいようです。
そこで、/etc/gitlab/gitlab.rb
に次のように書き込みます。
gitlab-rails['gitlab_shell_ssh_port'] = 49152
そして、コマンド sudo gitlab-ctl reconfigure
をたたけば、この設定が有効化され…ません。エラーを吐いて異常終了してしまいます。
実はこれが解決できなくてしばらくはまってしまっていたのですが、Rubyist のみなさまにはもうおわかりですね。Ruby の変数名にハイフンは使えませんorz
正しくはこう。変数名のハイフンをアンダースコアに置き換えましょう。
gitlab_rails['gitlab_shell_ssh_port'] = 49152
これでコマンド sudo gitlab-ctl reconfigure
をたたくことで、GitLab が利用する SSH ポート番号を49152に変更できました。GitLab が生成するリポジトリの URL にポート番号がついてくるのが確認できます。
あと、sshd_config で設定する SSH ポート番号なんかも別途変更しておきましょう。
おまけ:gitlab.yml
gitlab.rb に記述した設定は、GitLab に直接参照されるわけではありません。コマンド sudo gitlab-ctl reconfigure
が gitlab.rb を参照して生成するファイル /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
が設定の実体です。Omnibus package を使わずに GitLab をインストールした場合は、この gitlab.yml を直接編集して設定を変更することになります。
このファイルを見ると、次のような記述が見つかります。
itlab_shell:
# (中略)
ssh_port: 49152
gitlab.rb に記述した設定値が確かに反映されていますね。
まとめ
- GitLab は Git リポジトリをホスト・共有する Web アプリケーション
- Omnibus package を使うとかんたんに GitLab をインストールできる
- Omnibus package 版 GitLab の設定は
/etc/gitlab/gitlab.rb
に記述する。記述の方法は初期設定をファイル default.rb を参照 - Ruby も勉強しておいたほうがよさそうですね