把 Cobbler 添加 CentOS 7 RC 的注册

在Cobbler中注册CentOS 7 RC,并能够通过PXE引导自动安装。

首先

    • 今回使用したCobblerはCentOS 6.5上で動作している。CentOS 7 RC上ではないので悪しからず。

 

    • Cobblerのバージョンは2.4.4。

 

    • Cobblerの設定はCentOS 7 RC以外の適当なOSをPXEでインストールできるところまで終わっているものとする。

 

    すべてrootユーザで操作している。

(2014-07-06追記:目前,http://buildlogs.centos.org/centos/7/os/x86_64-latest/ 非最新版本,最新版本为 http://buildlogs.centos.org/centos/7/os/x86_64-20140704-1/。如果需要的话,可以将下载来源更改为这里)

(2014-07-08更新:CentOS 7.0已正式发布。cobbler import可通过更改后面提到的签名文件来执行,只需完成这一步骤即可使用以前的方法进行导入)

执行任务的步骤

创建CentOS 7 RC的本地镜像。

如果可以轻松使用Cobbler Import进行注册,我就不用太多考虑了,但可惜的是并非如此。

首先,由于Cobbler导入的目标必须存在于本地或通过rsync进行共享(对吗?),因此无法导入CentOS 7 RC的存储库 http://buildlogs.centos.org/centos/7/os/x86_64-latest/。

于是,决定在本地创建 http://buildlogs.centos.org/centos/7/os/x86_64-latest/ 的镜像。

为了执行reposync命令,需要为每个仓库创建配置文件。由于这次我希望除了Cobbler之外的其他用途也能使用这个仓库,所以我将其放置在Web服务器的文档根目录下(尽管这个文件本身并不一定非得在文档根目录下)。

# cat > /var/www/html/r-c7rc.conf <<EOD
[c7rc]
name=c7rc
baseurl=http://buildlogs.centos.org/centos/7/os/x86_64-latest
enabled=1
priority=99
gpgcheck=0
EOD

在执行reposync和createrepo之后进行批评。这时候就可以将其用作CentOS 7 RC的本地镜像。然而,由于现在并非既定目标,因此不需要这样做。

# reposync -l -n -d -m -c /var/www/html/r-c7rc.conf -r c7rc -p /var/www/html
# createrepo -g comps.xml /var/www/html/c7rc

以后会需要下载存储库中的images和LiveOS子文件夹。顺便提一下,LiveOS子文件夹的使用时间不在此操作步骤中说明,但会在使用PXE启动并实际安装操作系统时使用。

# cd /var/www/html/c7rc/
# wget -r -np -nH --cut-dirs=4 http://buildlogs.centos.org/centos/7/os/x86_64-latest/images/
# wget -r -np -nH --cut-dirs=4 http://buildlogs.centos.org/centos/7/os/x86_64-latest/LiveOS/

只需要一个选项: 顺便说一下,只要每当 http://buildlogs.centos.org/centos/7/os/x86_64-latest/ 更新时执行这些步骤,就可以使用最新的版本。

创建COBBLER发行版

好的,既然已经将所需文件下载到本地,就可以高兴地执行cobbler import命令了。然而,执行后却出现了”ERROR | No signature matched in /var/www/cobbler/ks_mirror/c7rc”这样的错误信息。对于这个问题,我们必须等待未来的Cobbler版本来解决。

(2014-07-06补记:我研究了哪些地方需要修正,所以在后面会提到。当然,即使修正了以使得cobbler import工作,考虑到http://buildlogs.centos.org/centos/7/os/x86_64-latest/以下有许多更新,为了将其纳入考虑,执行此后创建符号链接的步骤是最好的选择。)

因此,我们将执行cobbler distro add和cobbler profile add来代替cobbler import。

需要在/var/www/cobbler/ks_mirror文件夹下放置与/var/www/html/c7rc相同的内容,可以使用符号链接来完成,没有问题。

# ln -s /var/www/html/c7rc /var/www/cobbler/ks_mirror/

执行cobbler distro add命令。虽然很长,但只需要一个命令。

在这里,cobbler distro的name需要与/var/www/cobbler/ks_mirror创建的目录名称匹配。

也就是说,之前的符号链接已经创建在/var/www/cobbler/ks_mirror/c7rc,所以cobbler distro的name应该是c7rc。

# cobbler distro add --name c7rc --arch x86_64 --breed redhat --initrd /var/www/cobbler/ks_mirror/c7rc/images/pxeboot/initrd.img --kernel /var/www/cobbler/ks_mirror/c7rc/images/pxeboot/vmlinuz --ksmeta "tree=http://@@http_server@@/cblr/links/c7rc" --os-version rhel7

由于无法使用cobbler import命令,因此在使用cobbler安装的操作系统中,下列路径/var/www/cobbler/ks_mirror/c7rc被设置为core-0仓库,但并未配置为yum仓库。

首先需要创建一个名为core-0的仓库配置文件才能使用它。

# cat > /var/www/cobbler/ks_mirror/config/c7rc-0.repo <<EOD
[core-0]
name=core-0
baseurl=http://@@http_server@@/cobbler/ks_mirror/c7rc
enabled=1
gpgcheck=0
priority=\$yum_distro_priority
EOD

只要将这个文件作为cobbler distro的source repos添加即可,但尽管cobbler distro edit的选项中有–source-repos,但是还是需要以数组的数组形式进行添加,而且在–source-repos中甚至不知道如何添加普通的数组。

由于无法如何,所以只能直接在数据文件/var/lib/cobbler/config/distros.d/c7rc.json中写入。因为有一个”source_repos”: []的地方,所以只需将其更改为”source_repos”: [[“http://@@http_server@@/cobbler/ks_mirror/config/c7rc-0.repo”, “http://@@http_server@@/cobbler/ks_mirror/c7rc”]]即可。

在修改此文件时,需要先停止cobblerd服务。

# service cobblerd stop
# sed -i 's|"source_repos": \[\]|"source_repos": [["http://@@http_server@@/cobbler/ks_mirror/config/c7rc-0.repo", "http://@@http_server@@/cobbler/ks_mirror/c7rc"]]|' /var/lib/cobbler/config/distros.d/c7rc.json
# service cobblerd start

创建鞋匠档案

说到这里,我们已经完成了发行版,接下来要做的是配置文件。同时,我们还决定将EPEL7 beta作为一个仓库添加进来。通过cobbler repo add命令创建并且使用cobbler reposync进行同步。

# cobbler repo add --name epel7beta --mirror rsync://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/beta/7/x86_64/
# cobbler reposync --only epel7beta

创建kickstart文件。这里可以复制Cobbler提供的示例文件并进行适当的修改来使用。
在%packages部分,您可以写下想要安装的软件包或软件包组,但我将在后面进行说明想要写的内容。

# cp /var/lib/cobbler/kickstarts/sample_end.ks /var/lib/cobbler/kickstarts/centos7.ks
# vi /var/lib/cobbler/kickstarts/centos7.ks

最后,执行 “cobbler profile add” 完成配置。
由于使用了 “repos” 选项,并设置了之前添加的 “epel7beta” 仓库,因此在使用 Cobbler 安装 CentOS 7 RC 时,除了先前的 “core-0” 之外,还会自动将 EPEL7 beta 作为 yum 仓库进行配置。

# cobbler profile add --name c7rc --distro c7rc --kickstart /var/lib/cobbler/kickstarts/centos7.ks --repos epel7beta

只需通过PXE引导,选择这个配置文件(或将这个配置文件设为cobbler系统的默认配置),就可以自动安装CentOS 7 RC。

给你一个额外的东西

    CentOS 7ではNICの名前が標準ではpredictable network inteface name(例えば、VirtualBox上で動かしていれば最初の1枚はenp0s3)になるが、これを回避して従来通りのeth0にしたいなら以下のようにする。
# cobbler distro edit --name c7rc --kopts "net.ifnames=0 biosdevname=0" --kopts-post "net.ifnames=0 biosdevname=0"
    kickstartファイルの%packagesに少なくとも指定したいもの。
    1. wget: 如果没有这个程序,则在/etc/yum.repos.d/目录下不会生成任何内容。@base中包含它。

 

    bash-completion: 在CentOS 7中,由于systemd的原因,输入补全对于版本6以上非常重要。它包含在@base中。
    • 実際のところcobbler importを成功させるにはシグネチャファイル /var/lib/cobbler/distro_signatures.json のrhel7の中をcentos-releaseのrpmファイル名にマッチするよう、 “version_file”:”(redhat|sl|centos)-release-(?!notes)([\\w]*-)*7[\\.-]+(.*)\\.rpm”,

 

    • と修正すれば良い。ちなみにRHEL7でもScientific Linux 7 alphaでもrpmファイル名を見る限りこれで動くはずだ。

 

    • また、cobbler importを実行する前にcobblerdの再起動 service cobblerd restart が必要になる。

 

    • 2014-07-10追記: http://www.cobblerd.org/signatures/latest.json が修正されたため、この項の作業をしなくても次項の通り cobbler signature update を実行すれば良くなった。

 

    • 2014-07-15追記: Cobbler 2.4.5がリリースされ、上記シグネチャファイルの修正も含まれているので、これ以降のバージョンでは特に問題は起こらないだろう。もっともEPELにはまだ2.4.5は来ていないが。

Cobbler自体をアップデートしなくても cobbler signature update でシグネチャファイルを http://www.cobblerd.org/signatures/latest.json から取得する機能もある。2014-07-10時点でCentOS 7対応済み。

bannerAds