オンプレミス IBM Power10(S1014) で RHEL 9.4 サーバーに GitLab を導入 

### はじめに

IBM Power 上の Linux (RHEL 9.4 ppc64le) に GitLab を導入したログです。

Power上で GitLab を動かしたい場合のご参考で記載します。


---



### 環境


・RHEL 9.4 (ppc64le on IBM Power S1014)
　　dnf で Base と AppStream を設定

・GitLab CE 15.10.0
　　GitLab CE 15.10.0 for RHEL8 を使用しましたが、RHEL9.4 にも導入できました。
　　モジュールのダウンロードは以下で確認できます。
　　⇨ [Power-devops GitLab](https://www.power-devops.com/gitlab)




<br>

下記の手順は別で連携いただいた内容を参照させていただいています。感謝:nose_tone1:

---

### 前提設定


##### * dnf rpepository 設定

RHEL 9.4 Base iso ファイルの loopmount

```
# ls -l /work/RHEL/iso/
-rw-r--r--. 1 root root 8935112704 Dec 28 21:35 rhel-9.4-ppc64le-dvd.iso

# mkdir -p /media/rhel94/
# mount -t iso9660 -o loop /work/RHEL/iso/rhel-9.4-ppc64le-dvd.iso /media/rhel94/
```

dnf を以下のように設定しています。

```
# cat /etc/dnf/dnf.conf
[main]
gpgcheck=0
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False

[BaseOS]
name=RHEL94_BaseOS
baseurl=file:///media/rhel94/BaseOS/
enabled=1
gpgcheck=0
gpgkey=file:///media/rhel94/RPM-GPG-KEY-redhat-release

[AppStream]
name=RHEL94_AppStream
baseurl=file:///media/rhel94/AppStream/
enabled=1
gpgcheck=0
gpgkey=file:///media/rhel94/RPM-GPG-KEY-redhat-release
```


##### * SELinux無効化	

設定確認

```
# getenforce
Disabled
```

この環境では、最初から Disabled 状態でした。

```
# vi /etc/selinux/config	
# cat /etc/selinux/config | grep -v "#"	
SELINUX=disabled	
SELINUXTYPE=targeted	
```

##### * firewalld の停止

```
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
     Active: active (running) since Tue 2025-01-07 23:55:44 EST; 2 days ago
       Docs: man:firewalld(1)
   Main PID: 998 (firewalld)
      Tasks: 2 (limit: 11180)
     Memory: 86.7M
        CPU: 354ms
     CGroup: /system.slice/firewalld.service
             └─998 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
```

停止実行

```
# systemctl stop firewalld
```


##### * firewalld サービスの disabled 


```
#  systemctl list-unit-files -t service | grep firewalld.service
firewalld.service                          enabled         enabled
```

```
# systemctl disable firewalld.service
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
```

```
# systemctl list-unit-files -t service | grep firewalld.service
firewalld.service                          disabled        enabled
#
```

##### * langpacks-en を導入

```
# dnf install langpacks-en
====================================================================================================
 パッケージ                Arch            バージョン                  リポジトリー           サイズ
====================================================================================================
インストール:
 langpacks-en              noarch          3.0-16.el9                  RHEL_AppStream          11 k
依存関係のインストール:
 hunspell-en-GB            noarch          0.20140811.1-20.el9         RHEL_AppStream         226 k
 langpacks-core-en         noarch          3.0-16.el9                  RHEL_AppStream          11 k
弱い依存関係のインストール:
 glibc-langpack-en         ppc64le         2.34-100.el9                RHEL_BaseOS            674 k
 hunspell-en               noarch          0.20140811.1-20.el9         RHEL_AppStream         191 k

トランザクションの概要
====================================================================================================
インストール  5 パッケージ

合計サイズ: 1.1 M
インストール後のサイズ: 6.7 M
これでよろしいですか? [y/N]: y

~ ログ省略 ~ 

インストール済み:
  glibc-langpack-en-2.34-100.el9.ppc64le             hunspell-en-0.20140811.1-20.el9.noarch
  hunspell-en-GB-0.20140811.1-20.el9.noarch          langpacks-core-en-3.0-16.el9.noarch
  langpacks-en-3.0-16.el9.noarch

完了しました!
```


##### * libxcrypt-compat の導入


```
# dnf install libxcrypt-compat
メタデータの期限切れの最終確認: 0:19:41 前の 2025年01月10日 04時31分09秒 に実施しました。
依存関係が解決しました。
====================================================================================================
 パッケージ                 アーキテクチャー  バージョン             リポジトリー             サイズ
====================================================================================================
インストール:
 libxcrypt-compat           ppc64le           4.4.18-3.el9           RHEL_AppStream           104 k

トランザクションの概要
====================================================================================================
インストール  1 パッケージ

合計サイズ: 104 k
インストール後のサイズ: 261 k
これでよろしいですか? [y/N]: y

~ ログ省略 ~ 

インストール済みの製品が更新されています。

インストール済み:
  libxcrypt-compat-4.4.18-3.el9.ppc64le

完了しました!
```


---

### GitLab の導入


##### * gitlab-ce-15.10.0-ce.0.el8.ppc64le.rpm 導入

/work/gitlab 下に gitlab-ce モジュールを配置しています。


```
# cd /work/gitlab/
# ls -ltr
合計 1252276
-rw-r--r-- 1 root root 1282328502  1月  9 09:51 gitlab-ce-15.10.0-ce.0.el8.ppc64le.rpm
#
```

* 変数 EXTERNAL_URL の export 

```
# export EXTERNAL_URL="http://xxx.xx.xxx.xx:8081"
```

xxx.xx.xxx.xx にはサーバーのIPアドレスを設定しています。


* 導入

```
# dnf install /work/gitlab/gitlab-ce-15.10.0-ce.0.el8.ppc64le.rpm
メタデータの期限切れの最終確認: 0:11:53 前の 2025年01月10日 04時31分09秒 に実施しました。
依存関係が解決しました。
====================================================================================================
 パッケージ                       Arch        バージョン                   リポジトリー       サイズ
====================================================================================================
インストール:
 gitlab-ce                        ppc64le     15.10.0-ce.0.el8             @commandline       1.2 G
依存関係のインストール:
 annobin                          ppc64le     12.31-2.el9                  RHEL_AppStream     1.0 M
 dwz                              ppc64le     0.14-3.el9                   RHEL_AppStream     139 k
 efi-srpm-macros                  noarch      6-2.el9_0                    RHEL_AppStream      24 k
 fonts-srpm-macros                noarch      1:2.0.5-7.el9.1              RHEL_AppStream      29 k
 
~ ログ省略 ~
          
          RHEL_AppStream      41 k
 perl-Unicode-LineBreak           ppc64le     2019.001-11.el9              RHEL_AppStream     130 k

トランザクションの概要
====================================================================================================
インストール  195 パッケージ

合計サイズ: 1.3 G
インストール後のサイズ: 2.8 G
これでよろしいですか? [y/N]: y

~ ログ省略 ~ 


完了しました!
# echo $?
0
```

無事導入完了。


---


### GitLab 設定

##### * /etc/gitlab/gitlab.rb 編集


1075行目の 「puma['port']」のコメントを外し、ポート番号を 8089に設定。


```
# vi /etc/gitlab/gitlab.rb
```


編集後、reconfigure を実行します。


```
# gitlab-ctl reconfigure
[2025-01-10T04:51:26-05:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 17.10.0
Patents: https://www.chef.io/patents
Infra Phase starting
[2025-01-10T04:51:26-05:00] INFO: *** Cinc Client 17.10.0 ***
[2025-01-10T04:51:26-05:00] INFO: Platform: powerpc64le-linux
[2025-01-10T04:51:26-05:00] INFO: Cinc-client pid: 44978
[2025-01-10T04:51:28-05:00] INFO: Setting the run_list to ["recipe[gitlab]"] from CLI options
[2025-01-10T04:51:28-05:00] INFO: Run List is [recipe[gitlab]]
[2025-01-10T04:51:28-05:00] INFO: Run List expands to [gitlab]
[2025-01-10T04:51:28-05:00] INFO: Starting Cinc Client Run for testrhel9401082
[2025-01-10T04:51:28-05:00] INFO: Running start handlers
[2025-01-10T04:51:28-05:00] INFO: Start handlers complete.
Resolving cookbooks for run list: ["gitlab"]
[2025-01-10T04:51:29-05:00] INFO: Loading cookbooks [gitlab@0.0.1, package@0.1.0, logrotate@0.1.0, postgresql@0.1.0, redis@0.1.0, monitoring@0.1.0, registry@0.1.0, mattermost@0.1.0, consul@0.1.0, gitaly@0.1.0, praefect@0.1.0, gitlab-kas@0.1.0, git


~ ログ省略 ~

unning handlers:
[2025-01-10T04:54:45-05:00] INFO: Running report handlers
Running handlers complete
[2025-01-10T04:54:45-05:00] INFO: Report handlers complete
Infra Phase complete, 573/1543 resources updated in 03 minutes 19 seconds

Deprecations:
* gitaly['storage'] has been deprecated since 15.10 and will be removed in 16.0. In GitLab 15.10, Gitaly's configuration in Omnibus GitLab was changed to structurally match Gitaly's own configuration. Please see the migration instructions at https://docs.gitlab.com/ee/update/#1510


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.

[2025-01-10T04:54:45-05:00] WARN: This release of Cinc Client became end of life (EOL) on May 1st 2023. Please update to a supported release to receive new features, bug fixes, and security updates.
gitlab Reconfigured!

# echo $?
0
```

初期パスワードが /etc/gitlab/initial_root_password に 24時間保管されているとのことです。

<br>

##### * gitlab の再起動を実行

```
# gitlab-ctl restart
ok: run: alertmanager: (pid 47203) 0s
ok: run: gitaly: (pid 47221) 1s
ok: run: gitlab-exporter: (pid 47243) 0s
ok: run: gitlab-kas: (pid 47281) 0s
ok: run: gitlab-workhorse: (pid 47299) 1s
ok: run: logrotate: (pid 47315) 0s
ok: run: nginx: (pid 47321) 0s
ok: run: node-exporter: (pid 47334) 1s
ok: run: postgres-exporter: (pid 47340) 0s
ok: run: postgresql: (pid 47354) 0s
ok: run: prometheus: (pid 47363) 0s
ok: run: puma: (pid 47388) 0s
ok: run: redis: (pid 47393) 1s
ok: run: redis-exporter: (pid 47399) 0s
ok: run: sidekiq: (pid 47434) 0s

# echo $?
0

```


##### * 初期パスワードの確認

```
# cat /etc/gitlab/initial_root_password
# 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: xxxxxxxxxxx

# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
```

----


### GUI確認

http://”IPアドレス”:8081 でアクセス


(なお、ポートフォワーディングを行なってもアクセスできました。詳細割愛)


* ログイン画面

![gitlab1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/9fd9f6be-72b5-d34e-961e-fdb20778bca7.png)

rootユーザーと上で確認した初期パスワードを指定します。

* ログイン直後

![gitlab2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/cbf68004-bcac-9315-9f12-9e000b35d922.png)




---

パスワードを更新します。

右上のユーザーのプルダウンから Edit Profile を選択


![user.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/411d27d0-f30e-d79f-838c-6d5c54f3b763.png)


* プロファイル画面

![edit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/6e254224-4656-73ea-0df8-6ca0af5a5c55.png)

* Passwordに移動

パスワードを設定します。



![password.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/865f78ee-b088-d6c5-6aae-9c83d06463c3.png)

ログアウトして再度ログイン画面に。


![change1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/6c19a8d1-6a9f-5c56-4e3f-bd106017d24c.png)

設定したパスワードでログインできることを確認します。

![change2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/e048a653-da0e-3a0f-b18b-97bdb775f6d2.png)



---

### 気になる点

サービスのステータスを確認すると  gitlab-exporter が down 状態でした。

```
# gitlab-ctl status
run: alertmanager: (pid 51534) 1201s; run: log: (pid 46294) 2317s
run: gitaly: (pid 51547) 1201s; run: log: (pid 45634) 2439s
down: gitlab-exporter: 1s, normally up, want up; run: log: (pid 46091) 1287s
run: gitlab-kas: (pid 51615) 1189s; run: log: (pid 45830) 2422s
run: gitlab-workhorse: (pid 51629) 1189s; run: log: (pid 45990) 2354s
run: logrotate: (pid 51645) 1188s; run: log: (pid 45572) 2451s
run: nginx: (pid 51651) 1188s; run: log: (pid 46024) 2349s
run: node-exporter: (pid 51669) 1187s; run: log: (pid 46068) 2343s
run: postgres-exporter: (pid 51675) 1187s; run: log: (pid 46333) 2313s
run: postgresql: (pid 51686) 1186s; run: log: (pid 45743) 2428s
run: prometheus: (pid 51695) 1186s; run: log: (pid 46244) 2323s
run: puma: (pid 51720) 1185s; run: log: (pid 45909) 2367s
run: redis: (pid 51725) 1185s; run: log: (pid 45586) 2447s
run: redis-exporter: (pid 51737) 1184s; run: log: (pid 46154) 2329s
run: sidekiq: (pid 51759) 1182s; run: log: (pid 45943) 2359s
```


 gitlab-exporter のみ再起動をかけてみました。

```
# gitlab-ctl restart gitlab-exporter
ok: run: gitlab-exporter: (pid 56958) 0s
```

```
# gitlab-ctl status
run: alertmanager: (pid 51534) 1316s; run: log: (pid 46294) 2432s
run: gitaly: (pid 51547) 1316s; run: log: (pid 45634) 2554s
run: gitlab-exporter: (pid 57016) 1s; run: log: (pid 46091) 2452s
run: gitlab-kas: (pid 51615) 1304s; run: log: (pid 45830) 2537s
run: gitlab-workhorse: (pid 51629) 1304s; run: log: (pid 45990) 2469s
run: logrotate: (pid 51645) 1303s; run: log: (pid 45572) 2566s
run: nginx: (pid 51651) 1303s; run: log: (pid 46024) 2464s
run: node-exporter: (pid 51669) 1302s; run: log: (pid 46068) 2458s
run: postgres-exporter: (pid 51675) 1302s; run: log: (pid 46333) 2428s
run: postgresql: (pid 51686) 1301s; run: log: (pid 45743) 2543s
run: prometheus: (pid 51695) 1301s; run: log: (pid 46244) 2438s
run: puma: (pid 51720) 1300s; run: log: (pid 45909) 2482s
run: redis: (pid 51725) 1300s; run: log: (pid 45586) 2562s
run: redis-exporter: (pid 51737) 1299s; run: log: (pid 46154) 2444s
run: sidekiq: (pid 51759) 1297s; run: log: (pid 45943) 2474s
```

稼働状態です。


しかしながら、少し時間をおいたのち(次の日)に確認するとまだ down 状態でした。
GUI にはログインして操作はできています。


<br>

gitlab-exporter サービスを調べてみると、メトリクス測定で使用されるサービスの様子です。


https://gitlab-docs.creationline.com/ee/administration/monitoring/prometheus/gitlab_exporter.html

> GitLab Exporterを使うと、LinuxパッケージインスタンスでRedisやデータベースから取り出した様々なGitLabメトリクスを測定することができます。

一応動いているし、メトリクス使わなければよいかな..、と思い、対応はここまでにします。

---

### おわりに

IBM Power オンプレミス上でも GitLab を簡単に動かすことができます。


参考マニュアル：

https://gitlab-docs.creationline.com/

https://docs.gitlab.com/


以上です。