yum本地源製做OpenStack鏡像

以rdo爲例(http://openstack.redhat.com/Quickstart),介紹本地源製做方案: html

選擇一臺CentOS服務器,安裝如下軟件: web

1
2
yum install yum-utils createrepo yum-plugin-priorities
yum install httpd

設置httpd shell

1
2
chkconfig httpd on
service httpd start

獲取repo文件並使用reposync同步源 centos

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

第一次同步時間較長,同步結束後 bash

1
createrepo –update /var/www/html/openstack-icehouse

建立完成後,就可使用web測試:http://[ip]/openstack-icehouse/ 服務器

此處若使用其餘目錄下的文件夾的符號連接到/var/www/html處,須要關閉SELinux的安全選項 tcp

1
setenforce 0

測試若有問題多是80端口未開放 工具

1
vi/etc/sysconfig/iptables

添加如下內容到其中已有的22端口這條規則的下面 oop

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

安裝CentOS-5.3光盤中createrepo工具

shell

# rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm

加載EMOS-1.5的光盤,請把emos的光盤放到光驅中

shell

# mkdir /mnt/EMOS
# mount /dev/cdrom /mnt/EMOS
# cd /mnt
# createrepo .

備註:加載ISO的方法

shell

# mkdir /mnt/EMOS
# mount -o loop /path/emos_1.4_i386.iso /mnt/EMOS
# cd /mnt
# createrepo .

三、建立客戶端 yum 的定義文件:

shell

# cd /etc/yum.repos.d
# mkdir backup
# mv *.repo ./backup
# vi EMOS.repo

加入如下內容:

[EMOS]
name=EMOS
baseurl=file:///mnt/
enabled=1
gpgcheck=0

從新獲取最新的倉庫信息:

shell

# yum clean all
# yum list
在有repodata的時候,直接在/etc/yum.repo.d中加入repo文件便可。搞的時候出現瞭如下錯誤:

Bad id for repo: calamari server, byte = 8

錯誤是repo的【】中不能有空格。

相關文章
相關標籤/搜索