VMwareを使ってyumリポジトリサーバの動作検証をしてみた


自社勉強会で、RPMパッケージの管理方法について学習したので、ここに活用方法をアウトプットしておく。

まず、アプリケーションの動作環境としてユーザに向いているWebサーバ以外はセキュリティ的に外部に触れることのないローカル環境になっている場合が多い。(図1参照)
[図1]

上記のような環境で、ローカル環境のサーバにパッチをかけたい場合、パッケージをダウンロードしたDVDやUSBをマウントして、インストールする方法やyumリポジトリサーバを作り、そこから最新のパッケージを常に取ってくる方法がある。
ここでは、yumリポジトリサーバの設定を簡易的に行い、疑似的な環境でRPMパッケージをyumでインストールする方法を載せる。(図2参照)

[図2]

検証環境

VMwareでCentOSを2台立ち上げて、疑似yumリポジトリサーバとDBサーバとして検証する

VMware Workstation 14 Player
 ・CentOS Linux release 7.5.1804 (yumリポジトリサーバ)
 ・CentOS Linux release 7.5.1804 (DBサーバ)

1.yumリポジトリサーバの設定

■リポジトリディレクトリの作成とrpmパッケージの格納

ApacheのHTTP通信を使い、RPMパッケージの取得を行う。以下のパッケージのインストール。

# yum install httpd
# yum install createrepo

次に検証用にRPMパッケージをダウンロードしておく。

# cd /var/www/html
# mkdir repo
# yum --downloadonly --downloaddir=/var/www/html/repo update

上記のyumオプション--downloadonlyを使うとrpmパッケージをインストールせず、ダウンロードのみ行える。
また、--downloaddir=は、ディレクトリ指定を行う。指定しなかった場合は、私の環境では以下のディレクトリにダウンロードされていた。

デフォルトディレクトリ:/var/cache/yum/x86_64/7/updates/packages

サイトから直接ダウンロードしたい場合は、以下の「RPM Search」より、パッケージの検索をしてダウンロードすることもできる。
RPM Search

■リポジトリの作成

先ほどインストールしたcreaterepoコマンドを使用し、yumリポジトリの作成

# createrepo /var/www/html/repo

これにより、リポジトリ用に作成したrepoディレクトリにrepodataディレクトリが作成される。

次にリポジトリ情報の追加を行い、yumリポジトリの動作確認を行う。/etc/yum.repos.dに以下を追加

YumRepo.repo
[YumRepo]
name=YumRepo
baseurl=file:///var/www/html/repo
gpgcheck=0

リポジトリをリフレッシュする

# yum clean all

yum listコマンドでYumRepoリポジトリが追加されたことを確認

2.クライアントサーバ(DBサーバ)設定&インストール

次にインストールするサーバの/etc/yum.repos.dにリポジトリの情報を追加する。以下のように新規ファイルで作成。ファイル名・タイトルは好みで設定。
※httpdはあらかじめインストールされているものとする。

YumRepo.repo
[YumRepo]
name=YumRepo
baseurl=http://IPアドレス/repo
gpgcheck=0

リポジトリをリフレッシュする

# yum clean all

yumリポジトリサーバに確認用のindex.htmlを/var/www/html/に作成しておき、curlコマンドでyumリポジトリサーバとhttp通信ができることを確認する

# curl http://IPアドレス/index.html

yum listコマンドでYumRepoリポジトリが追加されたことを確認

実際にRPMパッケージを取得してみる

# yum --enablerepo=YumRepo install パッケージ名

リポジトリ名にYumRepoが表示され、インストールされたことが確認できた。

現場で構築する際は、yumリポジトリサーバが絶対に外の環境と接続された状態にならないように注意が必要。
悪意のあるユーザから変なソースの入ったrpmパッケージを配置される恐れなどがある。

ハマったポイント

・yumリポジトリサーバのSElinuxが有効になっていた為、apacheが使えず、403エラーになっていた
・http.confのDocumentRootがyumリポジトリの取得先に指定したパスと違っていた

参考資料

yum を使用して、パッケージをインストールせずにダウンロードだけ行う

yumリポジトリサーバの構築方法