[コンテナ] UBI7 イメージのyumでCentOS-Base リポジトリを追加する

## はじめに
`UBI7` をベースイメージとしてコンテナを作っている際、ubi リポジトリにないパッケージをインストールしたくなりました。

`UBI7` を使う前は`centos:7` を使っており、epelなどは`yum install epel-release` でいけましたが、UBIだとそうもいかず。

CentOS7 と同じようにyum を使いたかったので、いっそのこと`base`や`extra` など、CentOSなら標準で入っているリポジトリを設定してしまおうと思ったので、残しておきます。

## UBI イメージとは 　
以下の記事がとても分かりやすいです。

https://speakerdeck.com/moriwaka/ubi-faq

RedHat系のディストリビューションで軽量なコンテナイメージを使うなら、UBIを使っておけば間違えないと思います。

CentOS系のイメージはどうしても容量が大きい。。

https://connect.redhat.com/en/blog/migrating-your-base-image-from-centos-to-ubi

## UBI7イメージの取得方法
RedHat のページで検索すると出てきます。

https://catalog.redhat.com/software/containers/search?q=ubi

UBI7であれば

```bash
podman pull registry.access.redhat.com/ubi7/ubi
```

## yumを使う上での注意点
そのまま`yum install <package>` とすると、RHELのリポジトリからインストールされる可能性があります。

その場合、ライセンス費用が発生するため、yum plugin の`subscription-manager` は切っておくのが無難です。

### subscription-manager を切る方法1
上記の参考リンクのどちらにも載っていますが、yumに`--disableplugin=subscription-manager` オプションを付ければ切れます。

ただ、こちらだと、オプションつけ忘れた際に事故るので、以下の方法の方がいいような？・・・

### subscription-manager を切る方法2
`/etc/yum/pluginconf.d/subscription-manager.conf` の`enable` を0にする。

```bash
echo -e "[main]\nenabled=0" > /etc/yum/pluginconf.d/subscription-manager.conf
```

## UBI7デフォルト状態のyum repolist
もちろん、CentOS系のリポジトリ はありません

```bash
 yum repolist
repo id                          repo name
ubi-7/x86_64                      Red Hat Universal Base Image 7 Server (RPMs)
ubi-7-rhah/x86_64                 Red Hat Universal Base Image Atomic Host (RPMs)
ubi-7-server-extras-rpms/x86_64   Red Hat Universal Base Image 7 Server - Extras (RPMs)
ubi-7-server-optional-rpms/x86_64 Red Hat Universal Base Image 7 Server - Optional (RPMs)
ubi-server-rhscl-7-rpms/x86_64    Red Hat Software Collections RPMs for Red Hat Universal Base Image 7 Server  
```

## CentOS-Base.repo を追加する
`/etc/yum.repos.d` に`CentOS-Base.repo` を追加する。

```ini
# CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
```

### ポイント
それぞれの`mirrorlist` に指定しているURLのクエリストリング部分を静的に設定しています。

CentOS7 の場合、デフォルトだと`$releasever`や`$basearch` で指定されています。

UBI7 のデフォルトイメージで上記変数指定だと、環境変数や`/etc/yum.conf` で設定しても、うまくうごいてくれませんでした。。
(yum がどうやって上記変数を扱っているか調べられていないので、ご存知の方いたら教えてください・・・)

`$releasever ` の部分はCentOS7であれば、`7` を指定し、
`$basearch ` の部分は、想定利用環境がx86-64 アーキテクチャの環境なので、`x86-64` を指定。

というより、ここ見る限り、`x86-64`しか存在していないし、固定でも特に問題ない？・・・

http://mirror.centos.org/centos/7/os/

`$infra` は無くても大丈夫なので、なし。

## 追加後
`CentOS-Base.repo` 追加後、`yum repolist`を叩くと、追加されていることがわかります。

```bash
yum repolist
repo id                                 repo name
base                                    CentOS-7Server - Base
extras                                  CentOS-7Server - Extras
ubi-7/x86_64                            Red Hat Universal Base Image 7 Server (RPMs)
ubi-7-rhah/x86_64                       Red Hat Universal Base Image Atomic Host (RPMs)
ubi-7-server-extras-rpms/x86_64         Red Hat Universal Base Image 7 Server - Extras (RPMs)
ubi-7-server-optional-rpms/x86_64       Red Hat Universal Base Image 7 Server - Optional (RPMs)
ubi-server-rhscl-7-rpms/x86_64          Red Hat Software Collections RPMs for Red Hat Universal Base Image 7 Server
updates                                 CentOS-7Server - Updates 
```

これで、`deltarpm`、`epel-release`、`initscripts` なんかも`yum install` で入ります。