Fedora CoreOSをインストールして、PodmanでgitLabコンテナを立上げてみた。
もう一台、サーバを Fedora Server から Fedora CoreOS に変えたいと思います。CoreOS をインストールしたらこちらは開発サーバ用に Podman で gitLab コンテナを入れていきたいと思います。
Fedora CoreOS のインストール
前回と同じ手順ですので、さっと作ってみたいと思います。前回作成した USB と ignition ファイルも前回と同じものを使います。前回の手順はこちらを参考にしてください。 USB をセットしてサーバをリブートします。コンソールの入力画面が出たら前回と同様に fdisk を使って Fedora Server のパーティションを削除します。削除したら CoreOS をインストールします。
数分でインストール完了すると思います。あとはリブートすれば CoreOS のインストール完了です。
gitlab コンテナを構築します。
rootless コンテナで構築したいと思いますので、ignition ファイルに追加していたユーザで ssh 接続します。今回の構成は pod dev-server に gitlab と gitlab-runner、そして registry コンテナも入れたいと思います。
次に registry サーバを立ち上げたいと思います。データは、バックアップできるようにホスト側のディレクトリを作成しておきます。
次に gitlab を入れたいと思います。
セットアップまで少し時間がかかるので、ログをみながら進捗を待ちましょう。
Tip podmanのログを監視する方法 ログはpodman logs コンテナ名でみれますが、—fllow=trueとやるとtail -f ファイル名と同じような効果でログの進捗をみることができます。なお—tailオプションは単に行末の数行を出すのみです。
インストールが完了したら gitlab サーバにアクセスして接続できることを確認します。 最後に gitlab-runner コンテナもインストールしていきす。
コンテナが立ち上がったら runner を登録してみます。gitlab の CI/CD の設定から token をコピーしておきます。次に gitlab-runner のコンテナに入って runner を登録します。
Tip podのhostファイルにはコンテナ名が登録されています。 # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # used by slirp4netns 10.0.2.100 dev-server 21ad874c4552-infra 127.0.1.1 dev-server registry 127.0.1.1 dev-server gitlab 127.0.1.1 dev-server gitlab-runner
gitlab の CI/CD の設定画面で runnner がグリーンランプになっていれば OK です。 その後テストしてみると、mkdir: cannot create directory ‘/home/gitlab-runner/builds’: Permission denied とエラーとなってしまいました。gitlab-runner は、gitlab-runner ユーザ で処理されるようですが、/home/gitlab-runner の owner が root になっていたので、owner を gitlab-runner に変えておきました。
rootless で自動起動
サーバが立ち上がったら自動起動するように設定したいと思います。ユーザモードでの systemd を作成していきたいと思います。最初に service ファイルを登録するフォルダを作成しそこに podman generate コマンドを使って service ファイルを作成していきます。pod 名を指定するだけで pod とコンテナの service ファイルが作成されます。今回は、container-gitlab-runner.service、pod-dev-server.service、container-gitlab.service、container-registry.service の 4 つのファイルが作成されました。
自動起動とログアウトしてもサービスが使えるように設定します。指定は pod のみで OK です。
以上で自動起動の設定完了です。リブートして自動起動されていれば OK です。
systemctl status の結果です。
Fedora CoreOS+Gitlab インストール ダイジェスト
USB、ignition ファイルは前回のものを流用。
-
USB を挿入しリブートする。
-
fdisk で/dev/sda のパーティションを削除する。(Fedora Server を消す)
-
Fedora CoreOS をインストールする。 sudo coreos-installer install /dev/sda —ignition-url https ://www.xxxx.xxxx/default.ign
-
クライアント PC から ssh で接続する。 ssh yuzu@xxxx
-
registry、gitlab、gitlab-runner コンテナを作成する。 $ podman pod create —name dev-server -p 50000:5000 -p 50001:22 -p 50002:80 $ mkdir -p ~/data/registry $ podman run -dt —pod dev-server —restart=always —name registry -v ~/data/registry:/var/lib/registry:Z -e RESISTRY_HTTP_ADDR=0.0.0.0:5000 registry:2 $ ~/data/gitlab/logs ~/data/gitlab/data ~/data/gitlab/config $ podman run -dt —pod dev-server —name gitlab -v ~/data/gitlab/logs:/var/log/gitlab:Z -v ~/data/gitlab/data:/var/opt/gitlab:Z -v ~/data/gitlab/config:/etc/gitlab:Z gitlab/gitlab-ce:latest $ podman logs —follow=true gitlab ←進捗状況のログ監視 $ mkdir -p ~/data/gitlab-runner/config $ podman run -dt —pod dev-server —restart=always —name gitlab-runner -v ~/data/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest
-
gitlab-runner を登録する。 $ pdoman exec -it gitlab-runner sh --- コンテナ内 --- gitlab-runner register GitLab instance URL に http://localhost、token などを入力して runner を登録する。
-
自動起動の設定 $ mkdir -p ~/.config/systemd/user $ cd ~/.config/systemd/user $ podman generate systemd —files —name dev-server $ ls $ container-gitlab-runner.service container-gitlab.service pod-dev-server.service container-registry.service
$ systemctl —user enable pod-dev-server.service $ Created symlink /var/home/yuzu/.config/systemd/user/multi-user.target.wants/pod-dev-server.service → /var/home/yuzu/.config/systemd/user/pod-dev-server.service. Created symlink /var/home/yuzu/.config/systemd/user/default.target.wants/pod-dev-server.service → /var/home/yuzu/.config/systemd/user/pod-dev-server.service.
-
リブートしてコンテナが起動していることを確認。 $ sudo reboot $ systemctl status
以上で終了です。