在CentOS7.0上制作openstack-juno本地yum源
参考文献: 2014/09/27 | http://www.kekeyun.net/?p=222可可云计算网
以http://www.kekeyun.net/?p=222文为参考,在CentOS7.0上制作本地源,过程如下:
一、创建CentOS7虚拟主机
安装过程有点漫长,为了后续学习的需要,建议下载样样全版来安装。样样全版本下载地址http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1503-01.iso
为了节省资源,使用最小安装模式。
二、检查网络,保证能ping通rdo.fedorapeople.org
systemctl start network.service
ip addr
ping rdo.fedorapeople.org
三、挂载光盘,挂载光盘前先记得放入光盘
1.mkdir /media/cdrom
2.mount /dev/cdrom /media/cdrom
四、将挂载的光盘当作yum源
1.mv /etc/yum.repos.d/*.* /mnt#将原来的源移到某个空闲文件夹
2.vi /etc/yum.repos.d/CentOS-Media.repo
输入内容:
[centos-repo]
name=centos-repo
baseurl=file:///media/cdrom #注意///
enabled=1
gpgcheck=0
五、安装源管理工具和http服务
1.yum install yum-utils createrepo yum-plugin-priorities
2.yum install crontabs
3.yum install httpd
4.systemctl start httpd.service
5.systemctl enable httpd.service
6.systemctl status httpd.service
六、获取repo文件并使用reposync同步源
1.yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
2.yum repolist #可以看到源的id列表,记住openstack的源id是openstack-juno
3.yum clean all
4.yum makecache
5.cd /var/www/html/
6.reposync --repoid=openstack-juno
#openstack-juno是2查看到的openstack源id,同步时间较长,我花了2个小时
#这命令可能要反复执行几次,直到执行完后没有提示信息为止。
7.createrepo --update /var/www/html/openstack-juno
8.ll /var/www/html/openstack-juno/repodata/ #
七、打开防火墙
1.firewall-cmd --add-service=http
2.firewall-cmd --permanent --add-service=http
八、测试源是否可用,在需要使用源的主机上用浏览器测试
http://[ip]/openstack-juno,如果看到类似下图效果就表示测试成功了。
九、应用,在要安装openstack的主机上创建repo文件
vi /etc/yum.repos.d/CentOS-Media.repo
输入内容:
[openstack-repo]
name=juno
baseurl=http://[ip]/openstack-juno/
enabled=1
gpgcheck=0
十、自动更新脚本
简易版本,仅更新openstack-juno。
#!bin/bash
BASE_PATH=/home/repo
REPO_NAME=openstack-juno
cd $BASE_PATH
reposync --repoid=$REPO_NAME
createrepo �C-update $REPO_NAME
done
高级版本,更新多个本地源(高级版没有测试,使用时需注意修改参数)
#!/bin/bash
BASE_PATH=/home/repo
cd $BASE_PATH
REPO_LIST=(base extras updates foreman foreman-plugins openstack-juno puppetlabs-deps puppetlabs-products epel)
For REPO_NAME in ${REPO_LIST[@]};do
echo -------$REPO_NAME--------
LOGFILE_PATH=$BASE_PATH/reposync_log/$REPO_NAME
mkdir -p $LOGFILE_PATH
reposync --repoid=$REPO_NAME 2>&1 | tee $LOGFILE_PATH/reposync_$(date+"%Y%m%d%H").log
if [ $REPO_NAME = base ] || [ $REPO_NAME = extras ] || [ $REPO_NAME = updates ];then createrepo --update $REPO_NAME/Packages2>&1 | tee$LOGFILE_PATH/createrepo_$(date+"%Y%m%d%H").log
else
createrepo --update $REPO_NAME 2>&1 | tee $LOGFILE_PATH/createrepo_$(date+"%Y%m%d%H").log
fi
done
十一、 每天三更半夜自动运行
将上述更新脚本保存为文件 update-repo.sh
crontab �Ce
* 3 * * * /var/www/html/update-repo.sh