Ubuntu 22.10にGitlab-eeをインストールする話

今回は新規にGitlab-eeをインストールするタイミングで最新のUbuntu 22.10(kinetic)にインストールする方法についてまとめます。
基本的にGitlab-eeではLTSのパッケージが公開されている。（はず）なのでインストールしているディストリビューションの近くのLTSを指定すればOKです。
今回の22.10(kinetic)では近い22.04(jammy) LTSを指定すればOKです。
これの方法をまとめました。

# 実行環境のメモ
とりあえず22.10(kinetic)がインストールされている状態というのを確認します。

```
wataru@ubuntu:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.10"
NAME="Ubuntu"
VERSION_ID="22.10"
VERSION="22.10 (Kinetic Kudu)"
VERSION_CODENAME=kinetic
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=kinetic
LOGO=ubuntu-logo
 
wataru@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 22.10
Release:    22.10
Codename:    kinetic
```
公式のインストール手順でリポジトリを追加する
公式ドキュメントではgitlabのリポジトリを追加するにはcurlでシェルを実行しています。
シェル上でリポジトリのパスを生成しているわけです。
基本的には実行しているディストリビューションを指定しています

https://www.gitlab.jp/install/#ubuntu

実際にこの通りすると…

```
wataru@ubuntu:~$ curl -s "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh" | sudo bash
Detected operating system as Ubuntu/kinetic.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/gitlab_gitlab-ee.list...curl: (22) The requested URL returned error: 404
 
 
Unable to download repo config from: https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/config_file.list?os=Ubuntu&dist=kinetic&source=script
 
This usually happens if your operating system is not supported by 
packagecloud.io, or this script's OS detection failed.
 
You can override the OS detection by setting os= and dist= prior to running this script.
You can find a list of supported OSes and distributions on our website: https://packages.gitlab.com/docs#os_distro_version
 
For example, to force Ubuntu Trusty: os=ubuntu dist=trusty ./script.sh
 
If you are running a supported OS, please email support@packagecloud.io and report this.
```
とコケます

# 回避方法
回避方法はシンプルです、一つ前のLTSパッケージを指定すればOKです。

一つ前のdist名の抽出は以下のコマンド一発です


```bash
wataru@ubuntu:~$ curl https://changelogs.ubuntu.com/meta-release | grep -e Dist -e Version
...
Dist: focal
Version: 20.04.5 LTS
Dist: groovy
Version: 20.10
Dist: hirsute
Version: 21.04
Dist: impish
Version: 21.10
Dist: jammy
Version: 22.04.1 LTS
Dist: kinetic
Version: 22.10
現在利用している22.10(kinetic)の一つ前なので22.04.1 LTS(jammy)を指定します

OSとdistを指定したインストールの方法はコマンドの注意に書いている通りです

wataru@ubuntu:~$ curl -s "https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh" | sudo os=ubuntu dist=jammy bash
Detected operating system as ubuntu/jammy.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/gitlab_gitlab-ee.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.
 
The repository is setup! You can now install packages.
```
はい、これで入ります。

アップデートしてリポジトリ内容をチェックすると問題なくインストールできる状態であることが確認できます

```bash
wataru@ubuntu:~$ sudo apt-cache showpkg gitlab-ee
...
Provides: 
15.6.0-ee.0 - 
15.5.4-ee.0 - 
15.5.3-ee.0 - 
15.5.2-ee.0 - 
15.5.1-ee.0 - 
15.5.0-ee.0 - 
```
定義ファイルも問題なくjammyを指定しています

``` /etc/apt/sources.list.d/gitlab_gitlab-ee.list 
# this file was generated by packages.gitlab.com for
# the repository at https://packages.gitlab.com/gitlab/gitlab-ee
 
deb [signed-by=/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu/ jammy main
deb-src [signed-by=/usr/share/keyrings/gitlab_gitlab-ee-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu/ jammy main
```
ちなみに、公開しているリポジトリのバージョンってどうなのかな？と思いましたらリポジトリを直接見ればOKですよ

https://packages.gitlab.com/gitlab/gitlab-ee/

これでインストールできない、ちーん、は回避できますねw

教訓 : ちゃんと注意文言は読みましょう

# メモ
インストールしていつも管理者アカウントを忘れます。
管理者アカウントはrootでパスワードは

```
cat /etc/gitlab/initial_root_password
```
ででます。