FORCIA CUBEフォルシアの情報を多面的に発信するブログ

GitHubをMicrosoftが買収...注目の集まるGitLab

2018.06.14

テクノロジー

技術本部の龍島です。最近MicrosoftがGitHubを買収するというニュースが世間を騒がせていますね。GitHubがMicrosoft傘下に入った後も今までの中立的な立場が保たれるかが注目されるところです。
そんな中、GitHubの競合サービスであるGitLabに注目が集まっています。フォルシアでもソースコード管理にGitLabを利用しているので、今日はGitLabの始め方やフォルシアでの運用についてご紹介したいと思います。

GitLabとは

gitlab-logo.jpg

GitLabとはGitリポジトリホスティングをするソフトウェアでGitレポジトリの管理はもちろんのこと、Issue、Wiki、Merge Request(GitHubで言うPull Request)などの機能が備えられています。機能としてはGitHubと遜色なく、特にCI周りはGitLabの方が力を入れており、GitHubより優位で機能が豊富です。
また、GitHubは GitHub.com でクラウドサービスとしての提供が基本で、オンプレミスで動かすには有償のGitHub Enterpriseを利用する必要があります。GitLabは GitLab.com のようにクラウドサービスもありながら、オンプレミスかつ無償でプライベートな環境に構築することも可能なのが大きな魅力の一つです。
フォルシアでもGitLabをオンプレミスで利用しており、IssueやMerge Request、CI機能を利用した開発を進めています。

GitLabをはじめる

オンプレミスでGitLab Community Editionを始めてみましょう。公式ページのガイドが詳しいのでこちらに則って入れていくのが良いです。(dockerでの構築方法などもあります。)
CentOS6系を例としたものがこちら。

# http, sshアクセスの許可
sudo yum install -y curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh

# 必要なパッケージのインストール
sudo yum install postfix
sudo service postfix start
sudo chkconfig postfix on

# gitlabのインストール
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
sudo yum -y install gitlab-ce

これで最低限の準備は完了です。インストールしたサーバにブラウザでアクセスするとルートユーザの設定画面へ遷移するはずです。/etc/gitlab/gitlab.rbに設定ファイルがあるので、色々といじってみると良いでしょう。数行で簡単にGitLabが始められますね。

フォルシアでのGitLab運用

フォルシアではGitLabをVagrantで管理されたVM上で動作させています。Vagrantの設定ファイル(Vagrantfile)にはプロビジョニングスクリプトを指定できるので、GitLabを構築するためのスクリプトを用意しておき、vagrant upするだけでGitLabの環境が作成されるようにしています。
Vagrantfile, provision.sh(プロビジョニング用スクリプト)は下記のようなイメージです。

Vagrantfile

Vagrant.configure(2) do |config|
  config.vm.box = "bento/centos-6.7"

  config.vm.hostname = "gitlab"

  #providerはlibvirtを利用
  config.vm.provider "libvirt" do |libvirt|
    libvirt.storage_pool_name = "STORAGEPOOLNAME"
    libvirt.management_network_name = "NETWORKNAME"
    libvirt.management_network_address = "NETWORKADDRESS"
    libvirt.storage :file, :size => "40G"
    libvirt.memory = "8192"
    libvirt.cpus = "4"
  end

  config.vm.provision :shell, :path => "provision.sh"
end

provision.sh

#!/bin/bash

# GitLabのインストール
yum install -y postfix cronie
service postfix start
chkconfig postfix on
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
yum install -y gitlab-ce-9.2.7-ce.0.el6.x86_64 # install versionは固定

# GitLabの設定の適用
cp /vagrant/files/gitlab.rb /etc/gitlab/
gitlab-ctl reconfigure

公式のガイドから不要な部分は削っています。Vagrantfileのあるディレクトリに設定ファイルfiles/gitlab.rbを事前に用意しておき、自動で予め決めた設定が反映されるようにしています。

運用Tips

フォルシアでのGitLab運用のTipsを少しご紹介します。

マシンスペック

上記のVagrantfileにスペックが記載されていますが、CPU4コア、メモリ8GBで運用しています。利用人数は100人に満たない程度なので推奨されるマシンスペックよりは余裕を持ったスペックとなっていますが、バックグラウンドジョブが多いことや利用のサクサク感を重視したいことからこの割当となっています。

ユーザ認証

フォルシアでは各個人のマシンやファイルサーバのユーザ認証にLDAPを利用しています。GitLabでも数行程度の設定でLDAPが利用できるため、GitLabのために新たにユーザ管理の仕組みなどを作る必要はありませんでした。

バックアップ

GitLabは設定ファイルgitlab.rbバックアップファイルだけあれば復元することができます。GitLab.comでは2017年に本番データベースを喪失してしまうなんて事件がありましたが、適切にバックアップを取得し保管しておけば有事の際も問題はありません。VagrantでVMを作り直し、バックアップファイルを適用すればものの15分程度で復旧が可能です。
簡単に環境を復元できることはアップデートの検証の際にも役立ちます。URLを変えて別のVMでGitLabのミラーサーバを立ち上げ、そこでアップデートを実施し問題ないかの検証を手軽に行うことができます。

手軽にオンプレミスで始められるのはGitLabの大きな魅力です。オンプレミスだとトラブル時の対応にコストが...と思われがちですが、数年運用してきた中で大きなトラブルが起きたことはなく、安定して稼働しています。現在GitHubを利用されている方もこの機会にGitLabの利用を検討されてはいかがでしょうか?

この記事を書いた人

龍島 広人

技術第一部 エンジニア 2016年新卒入社。
Alexa向けスキル開発や社内開発インフラ業務を主に担当。
興味のある分野はDevOpsや仮想化技術。