前回の続きです。
今回は以前構築したNFSサーバーにGitLabのリポジトリデータ(プロジェクトやグループ等のデータ)を管理出来るように設定を行います。
GitLabのリポジトリデータは/var/opt/gitlab/git-data
に格納されています。
やる事としてはこのgit-data
の中身をNFSのマウント先にコピーし、GitLabがこのNFSのマウント先を参照するように設定変更を行います。
GitLabサーバーにNFSディレクトリをマウント
NFSサーバーの設定
まずはGitLabのリポジトリデータを格納するNFSサーバー側で設定を行います。
/home
配下等にGitLabのデータを格納するディレクトリを作成した後、/etc/exports
ファイルに以下のような設定を追加します。
<GitLabデータを格納するディレクトリのパス> <GitLabサーバーのIPアドレス>(<オプション>)
オプション一例
rw:クライアントに書き込みを許可
async:非同期書き込みを有効にする
no_root_squash:クライアント側のroot権限にて実行可能とする
例:
/home/git-nfs 192.168.0.3(rw,async,no_root_squash)
設定を追加したらNFSサービスを再起動します。
sudo systemctl status nfs-server
sudo systemctl restart nfs-server
sudo systemctl status nfs-server
以上でNFSサーバー側の設定は完了です。
GitLabサーバーにマウント
続いてGitLabサーバー側にてNFSサーバーで設定したディレクトリをマウントします。
/mnt
ディレクトリ配下等にマウント先のディレクトリを作成し、以下コマンドでマウントを実施します。
sudo mount -t nfs -o rw <NFSサーバーのIPアドレス>:<NFSサーバーのGitLabデータ格納先パス> <マウントディレクトリへのパス>
例:
sudo mount -t nfs -o rw 192.168.0.2:/home/git-nfs /mnt/git-data-nfs
エラーなくマウントが実行できたら、次はGitLabのリポジトリデータをコピーします。
コピーは以下のコマンドで実行します。
sudo rsync -av /var/opt/gitlab/gitlab-data/repositories <マウントディレクトリへのパス>
例:
sudo rsync -av /var/opt/gitlab/gitlab-data/repositories /mnt/git-data-nfs/
上記コマンド実行後、NFSサーバーのGitLabデータ格納先の中にrepositories
ディレクトリが入っていれば成功です。
NFSサーバー側で確認がとれたら、/etc/fstab
ファイルにマウントの設定を追加します。
mount
コマンドだけだと次回サーバーを再起動した際に自動でNFSのマウントはされませんので、再度コマンドを実行し直す必要があります。
そのため、次回再起動時にも自動でマウントする為にfstab
ファイルに設定を追加します。
<NFSサーバーのIPアドレス>:<NFSサーバーのGitLabデータ格納先パス> <マウントディレクトリへのパス> nfs <オプション> 0 0
例:
192.168.0.2:/home/git-nfs /mnt/git-data-nfs nfs defaults 0 0
これで次回サーバーを起動した際に自動でマウントされるようになります。
リポジトリデータの格納先の設定変更
リポジトリデータの移動が完了しましたので、次はこのリモートディレクトリをGitLabが参照出来るように設定します。
事前に以下のコマンドでGitLabサービスを停止します。
gitlab-ctl status
gitlab-ctl stop
gitlab-ctl status
続いて/etc/gitlab/gitlab.rb
ファイルにリポジトリデータの参照先を変更する設定を追加します。
viエディタ等でgitlab.rb
ファイルを開き、/git_data_dirs
という単語で2回検索します。
該当の設定の上に同じワードの異なる設定があるので2回検索する必要があります。
該当の設定はコメントアウトされているので、設定の左側に記載されている#
を外し、以下の様な設定に変更します。
git_data_dirs({ "default" => { "path" => "<マウントディレクトリへのパス>" } })
設定後、gitlab-ctl reconfigure
コマンドでリコンフィグを実行します。
エラーなく完了しましたら以下のコマンドでGitLabサービスを起動します。
gitlab-ctl status
gitlab-ctl start
gitlab-ctl status
全てのサービスがrun
になっていれば正常に起動しています。
以上でGitLabリポジトリデータのNFSサーバー管理が実現できました。