Amazon EC2を利用して、GitLabサーバを構築してみた【AWS】

わたしが参加しているプロジェクトでは、AWSリソースの構築・管理にGitLabを利用しています。

 

Git自体は過去に触ったことがあるのですが、GitLabは今まで触ったことがありませんでした。とりあえずGitLabサーバを構築してみようかと思います。

 

今回の記事では、Amazon EC2を利用して、GitLabサーバを構築する方法を紹介します。

 

 

GitLabサーバをAWSに構築

■GitLabとは

gitlabアイコン

そもそも‘GitLab’とはなんでしょうか。

 

GitLabは、DevOpsライフサイクル全体をカバーするオールインワンのアプリケーションです。 GitLabだけがコンカレント DevOpsを可能にし、ツールチェーンの制約から組織を解放します。 GitLabは、比類のない可視性、より高いレベルの効率性、包括的なガバナンスを提供します。 これにより、ソフトウェアのライフサイクルを200%高速化し、ビジネスのスピードを根本的に向上させます。GitLab公式webサイトより

 

 

■構築図

saitou-gitlab構築図

 

【利用するAWSサービス】
 

  • Amazon EC2
  • Amazon SES

 

 

■Amazon SES設定

GitLabにはメール通知を送信するためのSMTPサーバが必要です。公式のインストール手順だと、’Postfix’をインストールする方法が書かれていますが、今回はAWSを利用するので、AWSが提供するメールサービス’Amazon SES’を利用してみます。

 

 

↓[SES]と検索し、[Amazon Simple Email Service]をクリックします。

 

saitou-gitlabSES設定

 

↓左のナビゲーションペインから[Verified identities]をクリックし、[Create identity]を押します。

 

saitou-gitlabSES設定

 

↓以下の設定値を入力します。

 

項目 設定値
Identity type Email address
Email address 任意

 

 

saitou-gitlabSES設定

 

入力が完了したら、[Create identity]をクリックします。

 

↓登録したらメールアドレスの受信トレイを確認すると、AWSから検証メールが来ています。

 

saitou-gitlabSES設定

 

↓URLをクリックします。

 

saitou-gitlabSES設定

 

メールアドレスの検証は完了です。

 

↓[Identity status]も[Verified]となっています。

 

saitou-gitlabSES設定

 

 

次にSMTPの設定をします。

 

↓左のナビゲーションペインから[SMTP settings]をクリックし、[Create SMTP credentials]を押します。

 

saitou-gitlabSES設定

 

↓[Create]をクリックします。

 

saitou-gitlabSES設定

 

↓[Download Credentials]をクリックします。

 

saitou-gitlabSES設定

 

csvファイルがダウンロードされます。GitLabの設定ファイルを編集する際に利用しますので、削除しないようにお願いします。

 

 

Amazon SES設定は以上です。

 

 

■Amazon EC2起動

GitLabパッケージをインストールするための、EC2インスタンスを起動します。公式webサイトにはディストリビューションごとに推奨のインストール方法が掲載されていますので、参考にしてください。

 

saitou-gitlabパッケージインストールOS

 

 

↓サービス検索窓で[EC2]と入力し、[EC2]をクリックします。

 

saitou-gitlabEC2起動

 

↓[EC2 Dashboard]で[Launch instance]をクリックします。

 

saitou-gitlabEC2起動

 

↓AMIは’Ubuntu Server 20.04 LTS’を利用します。その他の設定はGitLabのハードウェア要件を見つつ、要件に合わせて設定してください。

 

  • CPU→4 cores is the recommended minimum number of cores and supports up to 500 users
  • Memory→4 GB RAM is the required minimum memory size and supports up to 500 users

 

 

saitou-gitlabEC2起動

 

↓Instance typeは’m5.large’を選択し、ストレージは’20GiB’で設定しました。

 

saitou-gitlabEC2起動

 

入力が完了したら、[Launch instance]をクリックします。

 

↓起動が完了したら、インスタンスに接続し、以下のコマンドを入力します。

 

sudo apt-get update
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
sudo EXTERNAL_URL="http://<EC2インスタンスパブリックIPアドレス>" apt-get install gitlab-ee

 

↓インストールに成功すると、以下のアイコンが表示されます。

 

saitou-gitlabパッケージインストール

 

 

GitLabに必要なパッケージのインストールが完了したら、以下のコマンドでメールの設定をしていきます。

 

ll /etc/gitlab/gitlab.rb
cp -p /etc/gitlab/gitlab.rb{,_`date "+%Y%m%d"`}
ll /etc/gitlab/gitlab.rb*
sudo vi /etc/gitlab/gitlab.rb

 

viエディタ画面で以下の項目のコメントアウト[#]を外し、必要事項を入力します。

 

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "email-smtp.ap-southeast-1.amazonaws.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "ダウンロードしたcsvファイルにあるSmtp Username"
gitlab_rails['smtp_password'] = "ダウンロードしたcsvファイルにあるSmtp Password"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'SESで登録したメールアドレス'
gitlab_rails['gitlab_email_reply_to'] = 'SESで登録したメールアドレス'

 

 

saitou-gitlabパッケージインストール

saitou-gitlabパッケージインストール

 

 

入力が完了したら、保存します。

 

↓念のため、diffコマンドでバックアップファイルと確認しました。

 

root@ip-10-10-0-9:~# diff /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_20230610
85,89c85,89
<  gitlab_rails[&#039;smtp_enable&#039;] = true
<  gitlab_rails[&#039;smtp_address&#039;] = "email-smtp.ap-southeast-1.amazonaws.com"
<  gitlab_rails[&#039;smtp_port&#039;] = 587
<  gitlab_rails[&#039;smtp_user_name&#039;] = "xxxxxxxxxxxxxxxxxxxxxxx"
 # gitlab_rails['smtp_enable'] = true> # gitlab_rails['smtp_address'] = "smtp.server"
> # gitlab_rails['smtp_port'] = 465
> # gitlab_rails['smtp_user_name'] = "smtp user"
> # gitlab_rails['smtp_password'] = "smtp password"
91,92c91,92
<  gitlab_rails[&#039;smtp_authentication&#039;] = "login"
 # gitlab_rails['smtp_authentication'] = "login"
> # gitlab_rails['smtp_enable_starttls_auto'] = true
109c109
 # gitlab_rails['gitlab_email_from'] = 'example@example.com'
111c111
 # gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'

 

確認が完了したら、以下のコマンドで設定を反映させます。

 

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

 

つぎに、メールの送信テストをします。以下のコマンドを実行してください。※1行目のコマンドは数十秒かかります。

 

sudo gitlab-rails console
Notify.test_email('メールアドレス', 'Message Subject', 'Message Body').deliver_now

 

受信トレイを確認すると、

 

saitou-gitlabパッケージインストール

 

さいごに、GitLabにログインするためのパスワードを確認します。

 

less /etc/gitlab/initial_root_password

 

saitou-gitlabパッケージインストール

 

 

↓それでは、以下のURLでGitLabにログインします。
http://<EC2インスタンスパブリックIPアドレス>

 

saitou-gitlabパッケージインストール

 

  • user\:root
  • password\:/etc/gitlab/initial_root_passwordにある文字列

 

 

saitou-gitlabパッケージインストール

saitou-gitlabログイン

 

 

[Welcome to GitLab]が確認できました。

 

今回は以上です。

 

まとめ:AWSを利用して、GitLabサーバを構築してみた

今回はセルフマネージドのGitLabサーバを構築しました。次回は構築したGitLabとTerraformを利用して、AWS上にリソースを構築してみたいと思います。

 

 

参考リンク:GitLab日本語情報サイト
 

 

↓ほかの協栄情報メンバーも自動化に関する記事を公開しています。ぜひ参考にしてみてください。

 

■AWS CodePipeline を利用してS3の静的ウェブサイトの更新を自動化する(tatsuoka)
https://cloud5.jp/tatsuoka-handson-beginner-codepipeline/

 

■AWS上にopenstackを構築(liuwanying)
https://cloud5.jp/openstack-install/

 

■Ansibleを利用してwindowsOSのインスタンスを操作する方法(umemoto)
https://cloud5.jp/control-windows-fromansible/

Last modified: 2023-06-15

Author