やん事ない理由で Git*.com を使えない日々をオンプレ版 GitLab で乗り切る


そう。やんごとない理由で使えない。

オンプレ版 GitLab で乗り切った覚書きとして GitLab 構築 (約2h) の一部始終の手順を書いておく。

環境

VirtualBox: 6.0.10r132072
https://www.virtualbox.org/wiki/Downloads

GitLab Community Edition 12.1.6

用途 OS Memory
Host OS Windows 10 16GB
Guest OS (GitLab サーバとして使用) CentOS 7.7 4GB 8GB

ゴール

イントラ内、もしくは VPN 経由http://192.168.100.201 で GitLab にアクセスできること。

構成図

4つのステップ

  1. Guest OS に CentOS をインストール
  2. GitLab のインストールと初期設定
  3. 既存 SVN or Git リポジトリがある場合はそれを GitLab にプッシュ
  4. チームメンバと GitLab の使い方を一緒に学んでいく

Guest OS に CentOS をインストール

  1. GUI はいらないので minimal をダウンロード
    http://ftp.riken.jp/Linux/centos/7.7.1908/isos/x86_64/

  2. 仮想マシンを新規作成

  3. ダウンロードした ISO をマウント

  4. ホストオンリーアダプターを追加

  5. 起動する
    参考: CentOSのインストール

  6. NAT の設定を変更する (インターネットに出れるようにするため)
    $ vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none #← 変更元は dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=enp0s3
    UUID=xxx
    DEVICE=enp0s3
    ONBOOT=yes #← 変更元は no
    IPADDR=10.0.2.25 #← 追加
    NETMASK=255.255.255.0 #← 追加
    GATEWAY=10.0.2.2 #← 追加
    DNS1=8.8.8.8 #← 追加
    
  7. ホストオンリーアダプターの設定を変更する (Host <--> Guest 間で通信するため)
    ※ VirtualBox GUI でも変更できるが...1
    $ vi /etc/sysconfig/network-scripts/ifcfg-enp0s8

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=none  #← 変更元は dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=enp0s8
    UUID=yyy
    DEVICE=enp0s8
    ONBOOT=yes #← 変更元は no
    IPADDR=192.168.56.101 #← 追加
    NETMASK=255.255.255.0 #← 追加
    DNS1=8.8.8.8 #← 追加
    
  8. 再起動
    $ reboot

  9. ポートフォワーディングのルールを追加

    • Rule1: http://192.168.100.201:80http:192.168.56.101:80 にアクセスできる。
    • Rule2: $ ssh -l {user-name}@192.168.100.201 -p 22192.168.56.101 に ssh できる。

    ※ やん事ない理由で80番ポートを使えず、10080番を使う場合

    1. $ vi /etc/gitlab/gitlab.rb

       #external_url 'http://192.168.100.201'
       external_url 'http://192.168.100.201:10080'
      
    2. 再構成 $ gitlab-ctl reconfigure

  10. 通信を確認。

    1. [Guest OS] からインターネットに出れること。
      $ curl http://www.example.com/
    2. [Host OS] から Guest OS に ssh できること。
      $ ssh {ユーザ名}@{前項で設定したホストオンリーアダプターのIPアドレス} -p 22
      $ ssh [email protected] -p 22
    3. [同一 LAN 上のマシン] から Host OS を経由して Guest OS に ssh できること。
      $ ssh {ユーザ名}@{ホストOSのIPアドレス} -p 22
      $ ssh bar@{192.168.100.201} -p 22

CentOS の初期設定

  1. 最低限の設定とインストール。
# 最新化
$ yum -y update

# 開発者ツールのインストール
$ yum -y groupinstall "Development Tools"

# vim インストール
$ yum -y install vim-enhanced

GitLab のインストールと初期設定

  1. インストール

    https://about.gitlab.com/install/#centos-7

    公式の手順を基本にする。(注: インストールするパッケージは gitlab-ee ではなく gitlab-ce)

    $ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
    ↓
    $ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
    
    $ sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee  
    ↓  
    $ sudo EXTERNAL_URL="https://192.168.100.201" yum install -y gitlab-ce
    
  2. 管理者でサインイン
    Username: root
    Password: 5iveL!fe

  3. 初期設定3つ

    • GitLab ユーザの作成
    • グループの作成
    • 新規プロジェクトの作成 group/project

参考:
(基本) https://git-manual.net/gitlab-project-repository-user/
(ロールに付与される権限) https://qiita.com/mikoski01/items/7a7795a8a1e98d9ba6d9

既存 SVN or Git リポジトリがある場合はそれを GitLab にプッシュ。

  • Git リポジトリ
$ git remote set-url origin [email protected]/group/project.git

チームメンバと GitLab の使い方を一緒に学んでいく

社内勉強会などの啓蒙活動が基本。あとは「習うより慣れるやで~」的なノリで乗り切る。

後記

続編も書こうと思う。

続編1: オンプレ版 GitLab で GitLab Pages する
続編2: Docker outside of Docker (DooD) で GitLab-CI する


  1. バージョンアップで UI が変わったり、そもそも他の仮想化ソフトを使わなければいけないこともあるので設定ファイルを直接変更する