KUSANAGI で GitLabを動かしてみよう(1)(宮崎悟氏)

宮﨑悟

本記事では、KUSANAGI for Vagrantを使って、Ruby on RailsでPostgresqlを利用するGitLabの設定方法を紹介します。最新版のVagrantとVirtualBoxをインストールし、その後Vagrantfileの設定方法、仮想マシンの設定、シェルスクリプトの設定、そしてssh接続の方法について説明されています。最後に、GitLabのインストール方法を解説します。次回は、このGitLabの詳細な設定方法をご紹介予定です。

KUSANAGIでRails+Postgresqlを使ってみよう

以前の連載でRedmineをインストールしてみました。RedmineはRuby on Railsで動作するのですが、DBはMySQLで問題ありませんでした。

今回は、Ruby on RailsでPostgresql を利用するGitLabをどうさせてみたいと思います。前回の連載時から、KUSANAGI for Vagrantも変わっているので、まずはVagrantのおさらいをします。

KUSANAGI for Vagrantを改めて使ってみよう

今のKUSANAGI for Vagrantはイメージが新しくなり、最近のKUSANGI8.4.2がインストールされています。まずは、2019/06/10時点で最新版となる Vagrant2.2.4VirtualBox 6.0.8をインストールしましょう。VirtualBoxとHyper-Vは同時に動かないため、Hyper-Vを動かしている方は注意して下さい。
以下のように入力すれば最新のKUSANAGI for VagrantのVagrantfile が生成されます。この部分は、KUSANAGIの公式ドキュメンに書いてあるとおりです。

$ vagrant init primestrategy/kusanagi

Vagrantfileは以下のように書けば良いです。
vm.network は、ネットワークアドレスやポートが他とかぶらなければ問題ありません。ssh用のポートは 「, id: “ssh”」と末尾につけておくと、vagrant.exe ssh で使用可能になります。

Vagrant.configure("2") do |config|
  config.vm.box = "primestrategy/kusanagi"
  config.vm.network "forwarded_port", guest: 22, host: 8022, id: "ssh"
  config.vm.network "private_network", ip: "192.168.34.21"

以下の行は、VirtualBoxへのVM設定になります。必須なのは末尾のメモリ設定(vb.memory)になります。GitLabはメモリが4GB程度必要になるので必ず4096以上を指定して下さい。
mofifyvmでは以下の設定を変更しています。Windowsでは特に有用です。

  • USB/オーディオ設定をOFF
  • NAT先のDNSを使用
  • LAN接続をON
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["modifyvm", :id, "--usb", "off"]
    vb.customize ["modifyvm", :id, "--usbehci", "off"]
    vb.customize ["modifyvm", :id, "--audio", "none"]
    vb.customize ['modifyvm', :id, '--cableconnected1', 'on']
    vb.memory = "4096"
  end

以下は、ファイルをコピーしたり、VM起動時に実行するshellスクリプトの設定になります。個々では、以下のことを実施してます。

  1. ssh鍵のコピー(筆者はWSL上で実行するため、この設定があると便利です)
  2. DBやKUSANAGIの設定を生成し、ファイル(~/export.txt)に書き込み
  3. yum のアップデート
  4. kusanagi init/kusanagi provision
  config.vm.provision "file", source: "/home/s-miyaza/.ssh/id_ecdsa.pub", destination: "/tmp/id_edcsa.pub"
  config.vm.provision "shell", inline: <<-SHELL
    cat /tmp/id_edcsa.pub >> /home/vagrant/.ssh/authorized_keys
    rm /tmp/id_edcsa.pub
    KUSANAGI_PASSWORD=$(mkpasswd -l 20)
    DBROOTPASS=$(mkpasswd -s 0 -l 20)
    SITE_DOMAIN=gitlab.localdomain
    DBNAME=$(mkpasswd -s 0 -l 10 -C 0)
    DBUSER=$(mkpasswd -s 0 -l 10 -C 0)
    DBPASS=$(mkpasswd -s 0 -l 20)
     cat <<EOF > export.txt
    export TERM=xterm
    export KUSANAGO_PASSWORD=\"$KUSANAGI_PASSWORD\"
    export DBROOTPASS=\"$DBROOTPASS\"
    export SITE_DOMAIN=$SITE_DOMAIN
    export DBNAME=$DBNAME
    export DBUSER=$DBUSER
    export DBPASS="\$DBPASS\"
    export EMAILOPTION=--no-email
EOF
    source export.txt
    sudo yum clean all
    sudo yum update -y
    yes 1 | sudo kusanagi init --tz tokyo --lang en --keyboard en --passwd "$KUSANAGI_PASSWORD" --no-phrase --dbrootpass "$DBROOTPASS" --php7 --nginx --ruby24 --dbsystem psql
    sudo kusanagi provision --rails --fqdn $SITE_DOMAIN $EMAILOPTION --dbname $DBNAME --dbuser $DBUSER --dbpass "$DBPASS" gitlab
    sudo reboot
  SHELL
end

kusanagi initで –dbsystem psql を指定すると必ず「1」を指定するため、yes コマンドで1を入力しています。
この状態で vagrant.exe up を実行すると、rails+postgresqlのプロビジョニングが終わった状態でKUSANAGI for Vagrantが起動します。
vagrant.exe ssh や、指定したホスト・ポートに対してPoderosaやTeraTermなどのSSHターミナルで接続しましょう。vagrant.exe ssh-configを実行すると、以下の情報が表示されるので、それら情報を使用してssh接続しましょう。

  • Host名(HostName)
  • ユーザ名(User)
  • ポート(Port)
  • ssh鍵ファイル名(IdentityFile)

GitLabをインストールしよう

GitLabの設定をするには、公式ドキュメントのとおり、以下のように実行します。今回は、Communication Editionをインストールします。EXTERNAL_INSTALLは適当な「http:// 」で始まるURLを指定して下さい。

$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
$ env EXTERNAL_URL=http://gitlab.localdomain/ sudo yum install gitlab-ce
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink| 5.4 kB  00:00:00     
 * base: ftp.tsukuba.wide.ad.jp
 * epel: mirror2.totbb.net
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
  (中略)
Resolving Dependencies
--> Running transaction check
---> Package gitlab-ce.x86_64 0:11.11.2-ce.0.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================
 Package   Arch   Version          Repository       Size
============================================================
Installing:
 gitlab-ce x86_64 11.11.2-ce.0.el7 gitlab_gitlab-ce 627 M
Transaction Summary
============================================================
Install  1 Package

Total download size: 627 M
Installed size: 1.5 G
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/gitlab_gitlab-ce/packages/gitlab-ce-11.11.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY MB  00:00:00 ETA 
Public key for gitlab-ce-11.11.2-ce.0.el7.x86_64.rpm is not installed
gitlab-ce-11.11.2-ce.0.el7.x86_64.rpm    | 627 MB  00:00:43     
Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Importing GPG key 0xE15E78F4:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: 1a4c 919d b987 d435 9396 38b9 1421 9a96 e15e 78f4
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
Is this ok [y/N]: y
Retrieving key from https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
Importing GPG key 0xF27EAB47:
 Userid     : "GitLab, Inc. <support@gitlab.com>"
 Fingerprint: dbef 8977 4ddb 9eb3 7d9f c3a0 3cfc f9ba f27e ab47
 From       : https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : gitlab-ce-11.11.2-ce.0.el7.x86_64        1/1 

gitlab: GitLab now ships with a newer version of PostgreSQL (10.7), but it is not yet
gitlab: enabled by default. To upgrade, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl pg-upgrade

gitlab: Note: This command does not support Geo instances yet. So we don't
gitlab: recommend running this command on Geo nodes. It will be supported
gitlab: in GitLab 12.0.

gitlab: For more details, please see:
gitlab: https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server
gitlab: 
It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.



     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

  Verifying  : gitlab-ce-11.11.2-ce.0.el7.x86_64  1/1 

Installed:
  gitlab-ce.x86_64 0:11.11.2-ce.0.el7

Complete!

これで、/opt/gitlabにgitlabがインストールされた状態になります。
次回は、このGitLabの設定を行い、KUSANAGI上で動かそうと思います。お楽しみにお待ち下さい。

関連記事

Webサイト運用の課題解決事例100選 プレゼント

Webサイト運用の課題を弊社プロダクトで解決したお客様にインタビュー取材を行い、100の事例を108ページに及ぶ事例集としてまとめました。

・100事例のWebサイト運用の課題と解決手法、解決後の直接、間接的効果がわかる

・情報通信、 IT、金融、メディア、官公庁、学校などの業種ごとに事例を確認できる

・特集では1社の事例を3ページに渡り背景からシステム構成まで詳解