Fedora12,CentOS5のyumサーバーを作ってみた

今回ネットワーク切り替えに伴い、外部に直接接しているサーバー(といってもF/Wは全て閉じてあるルーターなのだが w) が出来たため、これを機にFedora12でyumサーバーを構成し、各VMを最新の状態に保てるようにしてみた。

参考にしたリンクは以下になる。<<参考リンク>>
http://ken-etsu-tech.blogspot.com/2007/05/4updates.html
http://www.sssg.org/blogs/naoya/archives/4

※ なおFedora11=>Fedora12のアップグレードは、ネットワーク接続がない状態でもFedora12のDVDから実施出来るため、VM数が多い場合は、yumサーバーと合わせて使うと効果的なようだ。。


上位のミラーとの同期はFedora12のreposync(yum-utilsパッケージ)コマンドで行った。reposyncは、yumコマンド同様/etc/yum.repo.d 以下のファイルを読むのだが、手動でどのレポジトリを同期するかを指定できるため、普段使っていない(enabled=0)のレポジトリも同期することが出来る。このため、/etc/yum.repo.d/yumserver1.repo というファイルを作成し、Fedora12, CentOS5(32, 64bit版の2組ずつ) を同期できるようにした。ファイルの中身は以下のようになる。

[fedora12_32_updates]
name=Fedora 12 - i386 - Updates
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/12/$basearch/
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=i386
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-i386

[fedora12_64_updates]
name=Fedora 12 - x86_64 - Updates
failovermethod=priority
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f12&arch=x86_64
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64

[centos5_64_updates] 
name=CentOS-5 - Updates
mirrorlist=http://mirrorlist.centos.org/?release=5&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-5
enabled=0

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

ほとんどディストリビューションデフォルトの設定ファイルのままで、arch, releaseを直書きにしたくらいである。。 また、今回updates の内容しか同期していないため、完全にインターネット側の接続を切ってしまうと依存性の問題でアップデートがかからないことがあるので注意。(あくまで帯域を節約するための設定である。。 orz)

この状態で、/var/www/htmlにレポジトリを同期するには、次のコマンドを使う。( -n があるので、最新のファイルしか同期しないので注意。。)

# reposync -p /var/www/html/ -r fedora12_64_updates -n
# reposync -p /var/www/html/ -r fedora12_32_updates -n
# reposync -p /var/www/html/ -r centos5_64_updates -n
# reposync -p /var/www/html/ -r centos5_32_updates -n

更に各RPMファイルに対してcreaterepoを使用し、yumが使用するデータを作成する。

# createrepo /var/www/html/fedora12_64_updates
# createrepo /var/www/html/fedora12_32_updates
# createrepo -s sha /var/www/html/centos5_64_updates
# createrepo -s sha /var/www/html/centos5_64_updates

※ CentOS5向けでは、チェックサム計算用に “-s sha” をつけないとyumコマンドが失敗するので注意。(Fedora12のデフォルトがsha256でCentOS5が対応していないらしい。。 orz)

あとは各クライアントでupdatesのbaseurlを次のような感じで設定すればyumでアップデートができるはずである。(もちろんyumサーバーではhttpdを動かしておくこと!! ww)

[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=http://192.168.1.15/fedora12_64_updates <== yumサーバーのIPアドレスを記入
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEYfedora-$basearch

こんな感じである。ちなみに各ディストリビューションのレポジトリのサイズは次のようになった。(単位はMB) ( パッケージ数が多いだけあり、Fedoraの方がはるかに大きい。。w )

1295	centos5_32_updates
1420	centos5_64_updates
6316	fedora12_32_updates
7981	fedora12_64_updates

yumサーバーがあると、ダウンロードにかかる時間が節約できるため、ディスク容量が許せば、ミラー側の帯域のためにも構築しておくと良さそうだ。。なお、単純に帯域節約の目的なら、yumのプロキシ設定と、squid等のプロキシキャッシュを使い、パッケージをキャッシュする方法もありそうなのだが、これについては後で時間がある時に。。