GitLab 6.9.4からGitLab7.4.2へのアップデートとSSHポートの設定
銀鷹です。
しばらく研究室のGitLabのアップデートをサボっていたが、
Task listsがサポートされたということもありバージョンアップを行ったので手順を残しておく。
GitLabの変更内容の詳細は以下のURLを参照のこと。
幾つか変更が行われているが、私(及び周囲の人)としてはTask Listsのサポートが一番大きい。
https://about.gitlab.com/2014/10/22/gitlab-7-4-released/
今回アップデートするGitLabはomnibus installerでインストールしているため、
アップデートもomnibus installerを用いて行う。
手順は以下のとおり、今回はGitLab 6.9.2からGitLab7.4.2へアップデートを行った。
今回アップデートを行うGitLabはDebian 7.6上で動作している。
公式アップデート手順より引用。
unicornとsidekiqの停止。
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq
GitLabのバックアップ(リポジトリ、Wiki、ユーザ等)
sudo gitlab-rake gitlab:backup:create
最新版パッケージの入手と適応。
以下のdebパッケージのURLは新しいバージョンがリリースされると変わるはず。
最新のものはここで確認のこと。
wget https://downloads-packages.s3.amazonaws.com/debian-7.6/gitlab_7.4.2-omnibus-1_amd64.deb sudo dpkg -i gitlab_7.4.2-omnibus-1_amd64.deb
GitLabの再設定と再起動。
gitlab.ymlを手動で書き換えている場合は変更が取り消されるので注意すること。
可能であれば後述の方法で設定の変更を行うことを推奨。
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart
以上でアップデートは完了。
なお、omnibus installerではなく、GitからCloneしてインストールをしている場合のアップデート手順は以下のとおり。
https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/update/6.x-or-7.x-to-7.4.md
/etc/gitlab/gitlab.rbを用いたGitLabの設定変更方法
例として、22番ポート以外でOpenSSH Serverを動作させている場合について記載する。
調べると、多くの場合以下のようにgitlab.ymlを変更するように記載されていることが多い。
## GitLab Shell settings gitlab_shell: ... # If you use non-standard ssh port you need to specify it ssh_port: 766
ただし、この用に直接gitlab.ymlを編集した場合、sudo gitlab-ctl reconfigure
を実行することで設定内容が上書きされてしまう。
正しくはgitlab.rbに以下のように記載する。
gitlab_rails['gitlab_shell_ssh_port'] = 766
この記載を行った上で、sudo gitlab-ctl reconfigure
を実行することによって、
ssh_portに766が設定された状態でgitlab.ymlが生成される。
このように記載することでgitlab.ymlの内容が変更される理由
GitLabのCookBookを見るとgitlab_shell_ssh_portは以下のように定義されている。
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/attributes/default.rb#L128
しかし、このattributesの上書きは以下のように行われるため、
通常のCookBookのattributesを上書きするつもりでgitlab.rbを編集すると失敗する。
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/libraries/gitlab.rb#L247
正しく設定を行うためには、
default['gitlab']['gitlab-rails']['gitlab_shell_ssh_port']
の中からgitlab-railsの部分を取り出し、-
を_
に変更する。
その上で、その後ろに['gitlab_shell_ssh_port'] = <設定したいポート番号>
と記載すればよい。
なぜこのような面倒な事を行っているのかはよくわからないが、
このようにすることでsshのポート番号に限らず他のattributesの上書きも行うことが可能である。
例えば、smptのポートを変更したい場合には、gitlab.rbに以下のように記載すれば良い。
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-cookbooks/gitlab/attributes/default.rb#L159
gitlab_rails['smtp_port'] = 11125