この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
わたしが参加しているプロジェクトでは、AWSリソースの構築・管理にGitLabを利用しています。
Git自体は過去に触ったことがあるのですが、GitLabは今まで触ったことがありませんでした。とりあえずGitLabサーバを構築してみようかと思います。
今回の記事では、Amazon EC2を利用して、GitLabサーバを構築する方法を紹介します。
GitLabサーバをAWSに構築
■GitLabとは
そもそも‘GitLab’とはなんでしょうか。
GitLabは、DevOpsライフサイクル全体をカバーするオールインワンのアプリケーションです。 GitLabだけがコンカレント DevOpsを可能にし、ツールチェーンの制約から組織を解放します。 GitLabは、比類のない可視性、より高いレベルの効率性、包括的なガバナンスを提供します。 これにより、ソフトウェアのライフサイクルを200%高速化し、ビジネスのスピードを根本的に向上させます。GitLab公式webサイトより
■構築図
【利用するAWSサービス】
- Amazon EC2
- Amazon SES
■Amazon SES設定
GitLabにはメール通知を送信するためのSMTPサーバが必要です。公式のインストール手順だと、’Postfix’をインストールする方法が書かれていますが、今回はAWSを利用するので、AWSが提供するメールサービス’Amazon SES’を利用してみます。
↓[SES]と検索し、[Amazon Simple Email Service]をクリックします。
↓左のナビゲーションペインから[Verified identities]をクリックし、[Create identity]を押します。
↓以下の設定値を入力します。
項目 | 設定値 |
---|---|
Identity type | Email address |
Email address | 任意 |
入力が完了したら、[Create identity]をクリックします。
↓登録したらメールアドレスの受信トレイを確認すると、AWSから検証メールが来ています。
↓URLをクリックします。
メールアドレスの検証は完了です。
↓[Identity status]も[Verified]となっています。
次にSMTPの設定をします。
↓左のナビゲーションペインから[SMTP settings]をクリックし、[Create SMTP credentials]を押します。
↓[Create]をクリックします。
↓[Download Credentials]をクリックします。
csvファイルがダウンロードされます。GitLabの設定ファイルを編集する際に利用しますので、削除しないようにお願いします。
Amazon SES設定は以上です。
■Amazon EC2起動
GitLabパッケージをインストールするための、EC2インスタンスを起動します。公式webサイトにはディストリビューションごとに推奨のインストール方法が掲載されていますので、参考にしてください。
↓サービス検索窓で[EC2]と入力し、[EC2]をクリックします。
↓[EC2 Dashboard]で[Launch instance]をクリックします。
↓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
↓Instance typeは’m5.large’を選択し、ストレージは’20GiB’で設定しました。
入力が完了したら、[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
↓インストールに成功すると、以下のアイコンが表示されます。
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で登録したメールアドレス'
↓
入力が完了したら、保存します。
↓念のため、diffコマンドでバックアップファイルと確認しました。
root@ip-10-10-0-9:~# diff /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_20230610
85,89c85,89
< 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'] = "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['smtp_authentication'] = "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
受信トレイを確認すると、
さいごに、GitLabにログインするためのパスワードを確認します。
less /etc/gitlab/initial_root_password
↓それでは、以下のURLでGitLabにログインします。
http://<EC2インスタンスパブリックIPアドレス>
- user\:root
- password\:/etc/gitlab/initial_root_passwordにある文字列
↓
↓
[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/