有时候项目需求,需要安装指定版本RPM包,而腾讯yum源又没有指定版本的RPM包时,抑或是自己编译制作的RPM包,需要自制一个YUM源,供局域网内其他机器使用。制作YUM源大致包括如下几个步骤:RPM包收集;createrepo创建YUM源索引信息;启动Http代理;客户机配置YUM安装软件。这里以NFS-GANESHA +NFS,GANESHA-GLUSTER为例,介绍YUM源的简易制作过程。
服务器:腾讯云CVM,centos7.4,10.105.27.251
客户机:腾讯云CVM,centos7.4,10.105.27.58
GLUSTER: 腾讯云CVM,centos7.4,其中一个节点ip:10.154.51.185
1) 下载gluster repo
yum -y install centos-release-gluster
执行完后/etc/yum.repo.d目录下会多出一个CentOS-Gluster-3.12.repo
注gluster-3.12RPM地址为:http://mirror.centos.org/centos/7/storage/x86_64/gluster-3.12/
2) 下载指定版本的nfs-ganesha和nfs-ganesha-gluster RPM包机器依赖
mkdir /data/nfs_ganesha_gluster/
cd /data/nfs_ganesha_gluster/
yum install --downloadonly --downloaddir=./ nfs-ganesha-2.5.5
yum install --downloadonly --downloaddir=./ nfs-ganesha-gluster-2.5.5
其中downloadonly选项会下载指定的RPM包及其依赖包,但不会安装。
执行后目录下会出现相关的RPM包,由于测试的gluster后端版本为3.12.5,故将依赖包中gluster相关库用3.12.11版本的替换为3.12.5(直接从gluster-3.12 RPM地址下载替换),如下图所示
这里我们使用createrepo工具。
yum install –y createrepo
createrepo/data/nfs_ganesha_gluster
执行完后,/data/nfs_ganesha_gluster目录下会多出一个repodata目录,其中最终的文件集repomd.xml,即RPM包metadata信息。
直接使用python做简单的代理
cd /data/nfs_ganesha_gluster
python -m SimpleHTTPServer 80 &>/dev/null &
vim /etc/yum.repo.d/My-Ganesha.repo
[My-Ganesha]
name=My-Ganesha
baseurl=http://10.105.27.251/
gpgcheck=0
enabled=1
其中baseurl中的ip为我们制作yum源的服务器地址。
yum install -y nfs-ganesha* --disablerepo=* --enablerepo=My-Gaensha
这里我们只用自己的yum源安装
vim /etc/ganesha/ganesha.conf
EXPORT{
Export_Id = 3 ; # Export ID unique to each export
Path = "/dht-volume1"; # Path of the volume to be exported. Eg: "/test_volume"
FSAL{
name = "GLUSTER";
hostname = "10.154.51.185"; # IP of one of the nodes in the trusted pool
volume = "dht-volume1"; # Volume name. Eg: "test_volume"
volpath = "/";
}
Access_type = RW; # Access permissions
Squash = No_root_squash; # To enable/disable root squashing
Pseudo = "/dht-volume1-seudo"; # NFSv4 pseudo path for this export. Eg: "/test_volume_pseudo"
Protocols = "3","4" ; # NFS protocols supported
Transports = "UDP","TCP" ; # Transport protocols supported
SecType = "sys"; # Security flavors supported
Attr_Expiration_Time = 0; #分布式ganesha禁用cache
}
其中dht-volume1为我们gluster后端的一个volume。
systemctl start nfs-ganesha
1) 查看挂载点
Showmount –e localhost
2) 挂载文件系统
mount -t nfs4 localhost:/dht-volume1-seudo /mnt/
验证ok。
如果自己更改nfs-ganesha代码,则需要自己制作nfs-ganesha的RPM,到时只需将nfs-ganesharpm包替换即可。