March 24, 2011

CentOS5における独自yum repositoryの設置

自前のyum repositoryを設置する。これは、自社ネットワークの配下にある数百台の仮想サーバが、アップデートなどのために一斉に外部のレポジトリにアクセスすると、帯域圧迫が激しいためである

レポジトリの実態を/var/yumrepos、レポジトリの管理者ユーザーをreposmanとして
# mkdir -p /var/yumrepos/centos/5.5
# ln -s /var/yumrepos/centos/5.5 /var/yumrepos/centos/5
# useradd reposman
# chown -R reposman. /var/yumrepos
# chkconfig httpd on
と環境を作り、公開のために/etc/httpd/conf.d/yumrepos.confを作成し
Alias /yumrepos /var/yumrepos
<Directory /var/yumrepos>
   Options Indexes FollowSymLinks
</Directory>
を記入し、httpdをスタート。(httpd.confでAllowOverride Allにしておく必要有り)
当然iptablesの80番portは開けておく。
また、レポジトリ作成のためにcreaterepoを導入する
# yum install createrepo
以下の作業はreposmanユーザーにて行う。
まず、外部のレポジトリからファイルを丸ごとコピーしてくる
$ rsync -avrt --exclude='/isos/' --exclude='i386/' --exclude='SRPMS' --exclude='repodata/' rsync://ftp.riken.jp/centos/5.5/ /var/yumrepos/centos/5.5/
このコピーは大変に相手方のサーバーに負荷をかけてしまう
実行時間帯には気を配るべき
また、インストールディスクを所持しているならiso/x86_64以下にコピーして、--exclude='/iso/'をオプションに追加すれば/os以下分負荷を減らせる

コピーが終わったらグループファイルを配置しておく
$ mkdir -m 775 /var/yumrepos/centos/5.5/os/x86_64/repodata
$ mkdir -m 775 $mkdir -m 775 /var/yumrepos/centos/5.5/extras/x86_64/repodata
$ cd /var/yumrepos/centos/5.5/os/x86_64/repodata
$ wget http://ftp.riken.jp/Linux/centos/5/os/x86_64/repodata/comps.xml
$ cd /var/yumrepos/centos/5.5/extras/x86_64/repodata
$ wget http://ftp.riken.jp/Linux/centos/5/extras/x86_64/repodata/yumgroups.xml
createrepoを実行する。
extras,osにはグループファイルがあるのでそれを適用する。
$ createrepo /var/yumrepos/centos/5.5/addons/x86_64/
$ createrepo /var/yumrepos/centos/5.5/contrib/x86_64/
$ createrepo /var/yumrepos/centos/5.5/fasttrack/x86_64/
$ createrepo /var/yumrepos/centos/5.5/updates/x86_64/
$ createrepo /var/yumrepos/centos/5.5/centosplus/x86_64/
$ createrepo -g /var/yumrepos/centos/5.5/extras/x86_64/repodata/comps.xml /var/yumrepos/centos/5.5/extras/x86_64/
$ createrepo -g /var/yumrepos/centos/5.5/os/x86_64/repodata/yumgroups.xml /var/yumrepos/centos/5.5/os/x86_64/
終了したら他のマシンで/etc/yum.repos.d/CentOS-Base.repoから
・mirrorlist行をコメントアウト
・baseurl行を復活、自前のレポジトリを参照するよう変更
させて、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成

No comments:

Post a Comment