GitLab CI/CDの学習を行いたいので、事前準備としてGitLabを構築したく、備忘録として構築手順を残そうと思います。
「GitLabなんて使ってる現場あるの? GitHubでいいじゃん!!」と思う方もいるかも知れませんが、GitHubは有名すぎるあまり脆弱性が多く存在しており、特にセキュリティを意識した企業では採用されないことが多いです。
また、近年はコード流出系の事故が多発しており、ソースコードをパブリックな環境で管理するのはあまり今どきではありません。GitHubはOSSではなくサービスですので、これもあまり採用されない理由の一つでしょう。
GitのホスティングサービスはGitHub以外にも沢山ありますが(BOX等..)、記事のタイトルにもある通り、今回オススメしたいGitホスティングサービスがGitLabです。
特にセキュリティに重きを置いている現場のGitLab採用率はとても高いので、まだGitLabを触った経験が無い方は本記事でハンズオンを実施し、GitLabで遊んでみることをオススメします。
概要
GitLabとは?
Gitlabとは、GitHubに影響されて作られたソースリポジトリの管理ソフトウェアです。
提供元は違いますが、その機能は殆どGitHubが同じで、”GitLab CICD”等、GitHubよりも利便性の高い機能も存在します。
GitLabはGitHubと同じようにWeb上で利用するサービス型と、ソフトウェアとしてダウンロードし自前のサーバ上で動かすOSS型が存在します。
本記事ではOSS版を利用してハンズオンを実施します。
OSS版には下記の2種類が存在します。
- GitLab Community Edition (GitLab CE)
- 無償:オープンソースでサーバーにインストールして使います。
- GitLab Enterprise Edition (GitLab EE)
- 有償:CE の機能強化版。同じくサーバーにインストールして使います。
OSS版だとアプリケーションだけでなくサーバの管理もセットになるので少し複雑に感じるかも知れませんが、プライベートな空間に立てれば大事なソースコードをパブリックにせず安全に管理することができます。
またカスタム性も高く、ご自身の環境に合わせた最適な設定を行うことが可能です。
GitHubとGitLabはどう違うの?
結論としては作ってる会社が違います。
GitHubはアメリカのGitHub, Inc.が、GitLabはGitLab, Inc.という企業が開発しています。
それぞれの違いをあげるとするならば、以下の通りとなります。
- GitHub
- 最も有名で最も利用者の多いソースコードのホスティングサービス
- クラウド上で運営されるSaaS型サービス
- GitLab
- SaaS型とOSS型の2種類のサービスが存在する
- 独自のCI機能が搭載されている
といってもどちらもGitを利用したソースコードのバージョン管理ツールであることに変わりはないので、単純なソース管理をしたいだけならどちらを使っても大きな差異はありません。
ご自身の環境に合わせた、適切なサービスを利用すると良いでしょう。
本記事で出来るようになること
- Amazon EC2(AmazonLinux2)上にGitLab(CE)を建てることが出来る!
- GitLab(CE)の構築スクリプトを公開!
構築
EC2インスタンスの作成
事前準備としてEC2インスタンス、及びEIPを作成します。
本記事では、EC2インスタンスの作成手順は省かせて頂きますが、作成したEC2インスタンスのパラメータを以下に記します。
※最低限のスペックでもGitLabは動作しますが、快適な利用を目指すのであれば、インスタンスサイズは「t3.midium」をオススメします。
- EC2
- AMI:Amazon Linux2
- インスタンスサイズ:t2.large
- ストレージサイズ:8gb
- セキュリティグループ
- 任意の場所からの「http」「https」のインバウンドルールを開けておく
GitLabのインストール
作成したEC2インスタンスにSSH接続し、GitLabのインストール、セッティングを行います。
- GitLabではPostfixが必要です。
AmazonLinux2だとデフォルトで入ってますが念の為確認と起動をしておきます。
# postfixの有効化
$ sudo systemctl enable postfix
# postfixを起動
$ sudo systemctl start postfix
# postfixの起動を確認
$ sudo systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2022-07-07 13:24:20 UTC; 6min ago
Process: 3081 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Process: 3078 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 3072 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Main PID: 3172 (master)
CGroup: /system.slice/postfix.service
tq3172 /usr/libexec/postfix/master -w
tq3173 pickup -l -t unix -u
mq3174 qmgr -l -t unix -u
Jul 07 13:24:20 ip-10-0-0-204 systemd[1]: Starting Postfix Mail Transport Ag....
Jul 07 13:24:20 ip-10-0-0-204 postfix/master[3172]: daemon started -- version...
Jul 07 13:24:20 ip-10-0-0-204 systemd[1]: Started Postfix Mail Transport Agent.
Hint: Some lines were ellipsized, use -l to show in full.
- GitLabのパッケージをリポジトリに追加します。
パッケージの最新版は下記リンク先より入手できます。
https://www.gitlab.jp/install/#centos-7
# GitLabのパッケージをリポジトリに追加
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
~~ インストール処理 ~~
The repository is setup! You can now install packages.
- リポジトリに追加した
# GitLabのパッケージをインストール
$ sudo yum install -y gitlab-ee
~~ インストール処理 ~~
Installed:
gitlab-ee.x86_64 0:15.1.2-ee.0.el7
Dependency Installed:
audit-libs-python.x86_64 0:2.8.1-3.amzn2.1
checkpolicy.x86_64 0:2.5-6.amzn2
libcgroup.x86_64 0:0.41-21.amzn2
libselinux-python.x86_64 0:2.5-12.amzn2.0.2
libsemanage-python.x86_64 0:2.5-11.amzn2
policycoreutils-python.x86_64 0:2.5-22.amzn2
python-IPy.noarch 0:0.75-6.amzn2.0.1
setools-libs.x86_64 0:3.3.8-2.amzn2.0.2
Complete!
※上記コマンドについて、EXTERNAL_URL="https://gitlab.example.com"
のようにオプションを付けることが可能です。これはGitLabへアクセスする際のURLを指定します。勿論後で設定することも可能ですので、お好きなタイミングで設定できればと思います。
コマンド例:sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-ee
設定ファイルの更新
- GitLabの設定ファイルを修正します。
今回はとりあえず動くところまでを目標にしているので、EXTERNAL_URL=""
だけ指定してやります。EXTERNAL_URL=""
については↑で説明しています。
# gitlab.rbを開く
$ vi /etc/gitlab/gitlab.rb
~~ 略 ~~
external_url 'https://gitlab.example.com'
~~ 略 ~~
※ドメインを持ってなくて、IPアドレスで指定したい場合は、httpで指定して下さい。
例:external_url 'http://xxx.xxx.xxx.xxx'
動作確認
external_url
で指定したURLをブラウザへ入力し、GitLabへアクセスできるか確認します。
下記のような画面が表示されれば動作確認OKです。

おまけ:GitLab(CE)構築スクリプト
GitLab(CE)を構築するシェルスクリプトを作成しましたので公開します。
スクリプトとしてや、中身をくり抜いてCloudFormation(Userdate)やTeraFormでご利用下さい。
#!/bin/bash
echo '+++++ GitLab CE install Script Start +++++'
echo ''
#!!!! GitLabのURLドメインを指定して下さい !!!!
# デフォルトではサーバのパブリックIPになります
echo "Get Global Ip Address"
http="http://" # --> https通信の場合は、https:// に修正
ExtraUrl=`curl ifconfig.io` # --> 独自ドメインをお持ちの場合はコメントアウト
# #ExtraUrl=""
ExtraUrl=$http$ExtraUrl
echo ''
# Install Postfix
yum list installed | grep postfix > /dev/null 2>&1
if [ $? = 0 ]; then
echo "Installed Postfix"
else
echo "Not Installed Postfix"
echo "Install Postfix"
yum install -y postfix
fi
echo ''
# Start Postfix
echo "Start Postfix Service"
sudo systemctl enable postfix
sudo systemctl start postfix
echo ''
# Setting Git Repository
echo "Setting Git Repository"
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
echo ''
# Install Gitlab
echo "Install Gitlab"
sudo EXTERNAL_URL=$ExtraUrl yum install -y gitlab-ee
echo ''
echo '+++++ GitLab CE install Script End +++++'
まとめ
以上がEC2上でのGitLabの構築手順となります。
そこまで大変な手順では無いので、UserDateに落とし込む等して、GitLabの構築を自動化していきたいところです。
また、GitLabに関する記事を投稿していきたいと思います。
コメント