Vagrant + GitLabの環境構築

1. はじめに

4月になって新しいプロジェクトが始まります。
正確には、4月から始まる予定だったのですが、残念なことに実質開始できるのは5月からという状況に。。。
ただ、VCSやITSなどの開発環境の構築などやれることはあるので、ちまちまとやっていこうかと考えています。
そこで、

  • 残念ながら今の部署にあるのはsvnの環境だけということ
  • 新しいプロジェクトは、ぼく+1名のミニマムな体制になりそうなこと

ということから、お手軽にGitLabを仮想環境上に構築してしまおうと思い立ちました。
ここでは、はじめてのVagrant、はじめてのGitLab、加えて少しおまぬけなぼくということで少しハマったところをまとめておきます。

2. 前提条件

  • Windows上に構築できること

(ぼくに与えられた端末がWindowsなもんで)

3. 手順

1. Vagrant + VirtualBox

プロバイダーにはVirtualBoxを使用します。

公式

Vagrant by HashiCorp

Oracle VM VirtualBox

2. GitLab on Ubuntu

以下のサイトから、GitLab on Ubuntuな box を探し出して使用することにしました。

A list of base boxes for Vagrant - Vagrantbox.es

> mkdir -p vagrant\gitlab
> cd vagrant\gitlab
> vagrant box add gitlab https://atlas.hashicorp.com/webysther/boxes/gitlab-ce-ubuntu-x64-14.04/versions/1.0/providers/virtualbox.box
> vagrant init gitlab

上記で作成した vagrant\gitlab フォルダにあるVagrantファイルを以下のように修正する

     config.vm.network "public_network", ip: "192.168.33.10" # ネットワークの設定はそれぞれの環境に適切なもので

最後に、

$ vagrant up

これで仮想環境を起動して、ブラウザで

http://192.168.33.10

にアクセスすればよいはずなのですが。。。

502エラー

f:id:o_masaaki:20170405110618p:plain

すんなり行くと思ったのに(´Д⊂グスン
何が起こっているのか調べるために、MSYSなどのsshを使用できる環境から

$ ssh vagrant@192.168.33.10
...
$ sudo gitlab-ctll status

してみると、

down: postgresql: 1s, normally up, want up; run: log: (pid 986) 486s

PostgreSQLが起動していない。
そこで、

$ sudo tail -n 4 /var/log/gitlab/postgresql/current

ログを確認してみると、

2017-04-04_09:14:28.61833 FATAL:  could not create shared memory segment: Cannot allocate memory
2017-04-04_09:14:28.61833 DETAIL:  Failed system call was shmget(key=5432001, size=1086947328, 03600).
2017-04-04_09:14:28.61833 HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory or swap space, or exceeded your kernel's SHMALL parameter. You can either reduce the request size or reconfigure the kernel with larger SHMALL. To reduce the request size (currently 1086947328 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.
2017-04-04_09:14:28.61833       The PostgreSQL documentation contains more information about shared memory configuration.

だって。
なので、もう一度 vagrant\gitlab フォルダにあるVagrantファイルを以下のように修正する

     config.vm.provider "virtualbox" do |vb|
       # Display the VirtualBox GUI when booting the machine
       vb.gui = false
       # Customize the amount of memory on the VM:
       vb.memory = "2048"
       vb.cpus = 2
     end

仮想環境を再起動します。

$ vagrant halt
$ vagrant up

ブラウザで

http://192.168.33.10

にアクセスすると、GitLabのスタートアップ画面が表示されました。

f:id:o_masaaki:20170405113249p:plain

実は、仮想マシンのメモリ容量は事前に確認はしていたんです。
ネットには、

GitLabを動かすには1Gのメモリが必要ですよ~

てな情報があふれていたので、

vagrant init

で吐き出されたVagrantファイルの「vb.memory = "1024"」という記述を見て、メモリ容量は大丈夫という思い込みが失敗でした。

ところが。。。

ログインできない問題

rootアカウントでログインしようとすると、500エラーでログインできません。
GitLab公式見ても、rootアカウントの初期パスワードは「5iveL!fe」とあるのに(ノД`)シクシク

f:id:o_masaaki:20170405114430p:plain

仕方ないので、rootパスワードをリセットすることにします。

$ ssh vagrant@192.168.33.10
...
$ sudo gitlab-rails console production
     > user = User.where(id: 1).first # root アカウント設定モードへ
     > user.password = 'secret_pass' # 新パスワード設定
     > user.password_confirmation = 'secret_pass' # 新パスワード(確認用)
     > user.save! # 設定を保存
     > exit # コンソール終了

これでログインできました。

f:id:o_masaaki:20170405114832p:plain