AmazonLinux2023 に GitLab をインストール

# はじめに
AmazonLinux2023 の環境で GitLab をインストールしてみました。
特に特別なことをするわけではないのですが、今(2023年8月くらい)まではAmazonLinux2022までしかなかったのと、今も何故か日本語サイトにはAmazonLinux2023がないということもあり、問題なくインストールできることを確認する意味も込めて書きました。

- 公式サイト - English

https://about.gitlab.com/install/

- 公式サイト - 日本語

https://about.gitlab.com/ja-jp/install/


# 環境
今回は AmazonLinux2023 にインストールするというだけで、GitLabのバージョンはその時の最新になります。
>インスタンス：t2.medium (CPU: 2vCPU, Memory: 4GiB)
>OS：AmazonLinux2023
> Storage: 8GiB
>GitLab：16.3

### 要件
また、インストール要件は以下に記載してありました。

https://docs.gitlab.com/ee/install/requirements.html

- Storage
`The Linux package requires about 2.5 GB of storage space for installation.`
- 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`

### セキュリティグループ
今回は HTTPS は使いませんが今後使う予定なので設定しておきます。

|タイプ |プロトコル|ポート|ソース     |
|-----|-------|-----|---------|
|SSH  |TCP    |22   |接続元IP  |
|HTTP |TCP    |80   |0.0.0.0/0|
|HTTPS|TCP    |443  |0.0.0.0/0|


# インストール
https://about.gitlab.com/install/#amazonlinux-2023

上記にあるインストール手順をベースに進めますが、いくつか変更して行っています。(というか割愛してます)
##### 変更点
- sshd：はそもそもインストールされているので設定は不要です。(updateがあればした方が良いですが)
- firewalld：もよほどセキュリティ要件が厳しいところでないと使わないためここではインストールしません。
- postfix：Amazon SES を使う想定のためインストールしません。
- dnf：サイト記載のインストールコマンドはdnfですが今回はyumで行っています。


## GitLab パッケージ用リポジトリのセットアップ
まずは GitLab をインストールするためのリポジトリを追加します。

```bash:リポジトリ追加
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
```
```text:出力結果
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  6968  100  6968    0     0  24562      0 --:--:-- --:--:-- --:--:-- 24621
Detected operating system as amzn/2023.
Checking for curl...
Detected curl...
Downloading repository file: https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/config_file.repo?os=amzn&dist=2023&source=script
done.
Installing pygpgme to verify GPG signatures...
gitlab_gitlab-ee-source                                                                                                          296  B/s | 862  B     00:02    
gitlab_gitlab-ee-source                                                                                                          7.7 kB/s | 3.1 kB     00:00    
Importing GPG key 0x51312F3F:
 Userid     : "GitLab B.V. (package repository signing key) <packages@gitlab.com>"
 Fingerprint: F640 3F65 44A3 8863 DAA0 B6E0 3F01 618A 5131 2F3F
 From       : https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey
gitlab_gitlab-ee-source                                                                                                           18 kB/s | 4.6 kB     00:00    
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-ee/gpgkey/gitlab-gitlab-ee-3D645A26AB9FBD22.pub.gpg
gitlab_gitlab-ee-source                                                                                                           65  B/s | 296  B     00:04    
No match for argument: pygpgme
Error: Unable to find a match: pygpgme

WARNING: 
The pygpgme package could not be installed. This means GPG verification is not possible for any RPM installed on your system. 
To fix this, add a repository with pygpgme. Usualy, the EPEL repository for your system will have this. 
More information: https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F

Installing yum-utils...
Dependencies resolved.
=================================================================================================================================================================
 Package                             Architecture                     Version                                        Repository                             Size
=================================================================================================================================================================
Installing:
 dnf-utils                           noarch                           4.1.0-1.amzn2023.0.3                           amazonlinux                            36 k

Transaction Summary
=================================================================================================================================================================
Install  1 Package

Total download size: 36 k
Installed size: 23 k
Downloading Packages:
dnf-utils-4.1.0-1.amzn2023.0.3.noarch.rpm                                                                                        357 kB/s |  36 kB     00:00    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                            207 kB/s |  36 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                         1/1 
  Installing       : dnf-utils-4.1.0-1.amzn2023.0.3.noarch                                                                                                   1/1 
  Running scriptlet: dnf-utils-4.1.0-1.amzn2023.0.3.noarch                                                                                                   1/1 
  Verifying        : dnf-utils-4.1.0-1.amzn2023.0.3.noarch                                                                                                   1/1 

Installed:
  dnf-utils-4.1.0-1.amzn2023.0.3.noarch                                                                                                                          

Complete!

WARNING: 
The yum-utils package could not be installed. This means you may not be able to install source RPMs or use other yum features.

Generating yum cache for gitlab_gitlab-ee...
Generating yum cache for gitlab_gitlab-ee-source...

The repository is setup! You can now install packages.
```
末尾に`The repository is setup! You can now install packages.` と出ていればリポジトリセットアップ完了です。


## GitLab のインストール
リポジトリが無事に追加されたらインストールを行います。
`EXTERNAL_URL` にはブラウザからアクセスするためのURLを記載します。
今回はまず独自ドメインを利用せずにインストールしたいと思います。
そのため、EC2のパブリックDNS(`ec2-xxx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com` という部分)を使います。
また、パブリックDNSのため `HTTPS` ではなく `HTTP` であることにも注意してください。

```bash:インストール
$ sudo EXTERNAL_URL="http://ec2-35-76-147-58.ap-northeast-1.compute.amazonaws.com" yum install -y gitlab-ee
```

```text:出力結果(一部抜粋)
Last metadata expiration check: 0:03:37 ago on Wed Sep 20 07:45:16 2023.
Dependencies resolved.
=================================================================================================================================================================
 Package                                        Architecture             Version                                        Repository                          Size
=================================================================================================================================================================
Installing:
 gitlab-ee                                      x86_64                   16.3.4-ee.0.amazon2023                         gitlab_gitlab-ee                   1.3 G
Installing dependencies:
 annobin-docs                                   noarch                   10.93-1.amzn2023.0.1                           amazonlinux                         92 k
 annobin-plugin-gcc                             x86_64                   10.93-1.amzn2023.0.1                           amazonlinux          
~~~
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.

NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

gitlab Reconfigured!

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


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

Thank you for installing GitLab!
GitLab should be available at http://ec2-35-76-147-58.ap-northeast-1.compute.amazonaws.com

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

Help us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=omnibus&release=16-3
~~~
Complete!
```
`Complete` と表示されればインストール完了です。


## ログインパスワードの確認
インストール後にブラウザログインするためのパスワードは `/etc/gitlab/initial_root_password` で確認できます。
なぜか公式の手順には記載がないので初めてインストールした際はログイン方法がわからず戸惑った記憶があります。
また、 `Username` はファイル名にもあるとおり `root` です。

```bash:パスワード確認
$ sudo cat /etc/gitlab/initial_root_password
```
```text:出力結果
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: ZddcHykgivbISiSje6E/2z1swU0ZEl8HF/RmS1V0u1s=

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
```
ファイル末尾の `NOTE` にもあるとおり、24時間経つとこのファイルは削除されてしまうため注意です。
ログインしたらパスワードは変更するか、このファイルをどこかに退避させるなどしておきましょう。


# ブラウザアクセス
それではブラウザアクセスしてみます。
![スクリーンショット 2023-09-20 17.04.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/2ab1c47b-ffe6-f796-4a42-cda13fb7b3af.png)

先ほど確認した ログインパスワード を使ってログインします。
以下、参考に今回の情報を記載しておきます。
> Username：root
> Password：ZddcHykgivbISiSje6E/2z1swU0ZEl8HF/RmS1V0u1s=

![スクリーンショット 2023-09-20 17.05.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/82090/ca4e0015-66a7-56b9-a97a-d14dbc2e5133.png)

以上でインストール完了です。


# おわりに
今回はすごくシンプルにインストールのみ行いました。
これからの予定として、
- 独自ドメインの設定 & Let's encrypt を使ったHTTPS化
- Amazon SES によるメール通知設定
- ELB(NLB)の導入
etc...

なども行う予定です。


# その他の GitLab に関する投稿
GitLab に関する記事は他にも投稿しているのでよければ読んでもらえたら嬉しいです。

https://qiita.com/kooohei/items/f7b7829243f766b6b0c1

https://qiita.com/kooohei/items/ddb69d37147e8952d0ee

https://qiita.com/kooohei/items/ff235f7857c8593801dc

https://qiita.com/kooohei/items/5fd8f81e5f099544e61d