加入收藏 | 设为首页 | 会员中心 | 我要投稿 | RSS
您当前的位置:首页 > 原创教程 > Linux系统管理

将cfengine集成到自己定制的CentOS发行版

时间:2014-04-15 09:22:11  来源:  作者:

 介绍如何定制自己的发行版,并且完全根据CentOS进行定制,我们看到了用cfengine管理Linux系统的优势,如何快速部署cfengine呢,我们把cfengine集成到自己的定制的Linux中.
本文根据编译好的cfengine来进行定制,大家都知道编译之前会有很多依赖,所以我们需要安装系统的时候把依赖装好,然后把编译好的二进制文件复制到当前系统中.

本文完全根据上一篇文章而来,挂载光驱安装工具等等这里就不介绍了.

首先.记录cfengine依赖包的依赖关系,然后把这些包复制到定制发行版的目录下,cfengine所依赖的包如下:


01 # 把依赖包添加到cfpkgs.list
02 vi cfpkgs.list
03 # 添加如下内容
04 keyutils-libs-devel
05 zlib-devel
06 e2fsprogs-devel
07 libsepol-devel
08 libselinux-devel
09 db4-devel
10 pcre-devel
11 krb5-devel
12 flex
13 openssl-devel
14 # 然后根据cfpkgs.list把包复制到发行版的CentOS目录下:
15 for i in `cat cfpkgs.list `:; do file=`echo $i ¦ sed 's/://g'`; cp /mnt/CentOS/$file* /usr/cold/CentOS/; done
复制完包之后就需要编辑comps.xml,


1 cd /usr/cold/
2 # 编辑comps.xml
3 vi repodata/comps.xml
向comps.xml添加这几个包group节点


01 <group>
02 <id>cfengine</id>
03 <name>Cfengine</name>
04 <name xml:lang="en_GB">Cfengine</name>
05 <description>Cfengine </description>
06 <description xml:lang="en_GB">Cfengine</description>
07 <default>true</default>
08 <uservisible>false</uservisible>
09 <packagelist>
10 <packagereq type="default">keyutils-libs-devel</packagereq>
11 <packagereq type="default">zlib-devel</packagereq>
12 <packagereq type="default">e2fsprogs-devel </packagereq>
13 <packagereq type="default">libsepol-devel</packagereq>
14 <packagereq type="default">libselinux-devel</packagereq>
15 <packagereq type="default">db4-devel</packagereq>
16 <packagereq type="default">pcre-devel</packagereq>
17 <packagereq type="default">krb5-devel</packagereq>
18 <packagereq type="default">flex</packagereq>
19 <packagereq type="default">openssl-devel </packagereq>
20 </packagelist>
21 </group>
然后通过命令创建源:


1 createrepo -g repodata/comps.xml CentOS/
计算comps.xml的sha值


1 sha1sum repodata/comps.xml
2 f6f086a3c2b7eee2050580aa3e74c841dd406dfc repodata/comps.xml
编辑repomd.xml


1 vi repodata/repomd.xml
将新的sha值更新到repomd.xml


1 <data type="group">
2 <location href="repodata/comps.xml"/>
3 <checksum type="sha">f6f086a3c2b7eee2050580aa3e74c841dd406dfc</checksum>
4 <timestamp>1272586365</timestamp>
5 </data>
接下来把我们编译好的cfengine(根据安装配置cfengine实现自动化配置Linux/Unix服务器)复制到定制的发行版的目录下:


1 cp -r /usr/local/cfengine/ /usr/cold/
然后编辑ks文件:


01 vi isolinux/ks.cfg
02 # 在末尾添加如下内容
03 %packages
04 @core
05 @useful
06 @cfengine # 添加cfengine软件组
07 # %post是安装后执行的脚本,
08 # 还有一种标记 %pre是安装前执行的脚本,但不推荐使用这种脚本,
09 # 因为脚本出错会导致安装失败
10 # --nochroot是不切换根目录,这时候安装好的系统会挂载在 /mnt/sysimage下
11 %post --nochroot
12
13 # 创建cfengine的工作目录
14 mkdir -p /mnt/sysimage/var/cfengine/masterfiles
15 mkdir -p /mnt/sysimage/var/cfengine/inputs
16 mkdir -p /mnt/sysimage/var/cfengine/outputs
17 mkdir -p /mnt/sysimage/var/cfengine/bin
18 mkdir /a
19 mount /tmp/cdrom /a
20 # 复制二进制文件和cfengine
21 cp /a/cfengine/sbin/cf-* /mnt/sysimage/var/cfengine/bin/
22 cp -r /a/cfengine /mnt/sysimage/usr/local/
然后制作镜像:


1 mkisofs -R -J -T -r -l -d -allow-multidot -allow-leading-dots -no-bak -o /usr/ColdOS-0.1-i386.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
然后把镜像下载下来进行安装,安装完成后执行


1 /var/cfengine/bin/cf-key # 生成认证证书
2 /var/cfengine/bin/cf-agent --bootstrap --policy-server cfhubip
3 /var/cfengine/bin/cf-agent # 执行承诺
即可从cfhubip那里下载承诺文件执行承诺,根据cfhub进行本地配置
还可以根据%post更加自由的定制自己的系统,比如最小化安装后会无法使用本地镜像来使用yum可以定义一个局域网yum,在%post –nochroot添加如下内容:


01 cat <<__EOF__ > /mnt/sysimage/etc/yum.repos.d/CentOS-Media.repo
02 # CentOS-Media.repo
03 # yum --disablerepo=* --enablerepo=cold [command]
04 [cold]
05 name=CentOS-$releasever - Media
06 baseurl=http://192.168.0.254/CentOS
07 gpgcheck=1
08 enabled=1
09 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
10 __EOF__
11
12 mv /mnt/sysimage/etc/yum.repos.d/CentOS-Base.repo /mnt/sysimage/etc/yum.repos.d/CentOS-Base.repo.bak
这里就不详细介绍,大家可根据这个更加自由的来定制自己的Linux发行版.

来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
在CentOS下搭建Android 开发环境
在CentOS下搭建Androi
轻松搭建属于自己的Ubuntu发行版
轻松搭建属于自己的Ub
利用SUSE Studio 打造自己的个性化Linux发行版
利用SUSE Studio 打造
那些采用PHP技术的IT大企业
那些采用PHP技术的IT大
相关文章
    无相关信息
栏目更新
栏目热门