以rdo为例(http://openstack.redhat.com/Quickstart),介绍本地源制作方案:
选择一台CentOS服务器,安装以下软件:
1 2 | yum install yum-utils createrepo yum-plugin-priorities yum install httpd |
设置httpd
1 2 | chkconfig httpd on service httpd start |
获取repo文件并使用reposync同步源
1 2 | yum install -y http://rdo.fedorapeople.org/rdo-release.rpm yum repolist #可以看到源的id列表 |
同步openstack-icehouse这个repo
1 2 | cd /var/www/html/ reposync --repoid=openstack-icehouse |
第一次同步时间较长,同步结束后
1 | createrepo –update /var/www/html/openstack-icehouse |
创建完成后,就可以使用web测试:http://[ip]/openstack-icehouse/
此处若使用其他目录下的文件夹的符号链接到/var/www/html处,需要关闭SELinux的安全选项
1 | setenforce 0 |
测试如有问题可能是80端口未开放
1 | vi/etc/sysconfig/iptables |
添加以下内容到其中已有的22端口这条规则的下面
1 2 | -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT |
配置crontab定时任务进行定期reposync和createrepo
1 | yuminstallcrontabs |
添加执行reposync和createrepo的crontab命令
这次在公司直接做了很多常用源的镜像,写了个crontab定期半夜2点执行的脚本,完整如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/bash BASE_PATH=/home/repo cd$BASE_PATH REPO_LIST=(base extras updates foreman foreman-plugins openstack-icehouse puppetlabs-deps puppetlabs-products epel) forREPO_NAMEin${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 |
脚本完成了对REPO_LIST下源的镜像同步工作,并记录log(其中base等repo的rpm包在Packages文件夹下,所以createrepo的时候,路径多一层)
搞定了本地源,如果要使用的话就修改机器的/etc/yum.repos.d下的文件,将bashurl写成本地ip和路径,并把gpgcheck设置为0。
制作本地 yum 仓库
使用EMOS-1.5.ISO光盘制作本地 yum 仓库;
此外,我们假设本次安装默认域是extmail.org,主机名为:mail.extmail.org
安装-5.3光盘中createrepo工具
shell
加载EMOS-1.5的光盘,请把emos的光盘放到光驱中
shell
备注:加载ISO的方法
shell
3、创建客户端 yum 的定义文件:
shell
加入以下内容:
[EMOS]name=EMOSbaseurl=file:///mnt/enabled=1gpgcheck=0
重新获取最新的仓库信息:
shell
Bad id for repo: calamari server, byte = 8
错误是repo的【】中不能有空格。