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等のプロキシキャッシュを使い、パッケージをキャッシュする方法もありそうなのだが、これについては後で時間がある時に。。