个人博客原文链接:www.imycloud.com
一、先扯犊子:
工作中需要时常搭建cloudstack的测试环境,由于内部网络限制,使用官方yum安装变得很困难。另外网速这个是硬伤。所以将cloudstack 官方的安装源“http://cloudstack.apt-get.eu” 同步到本地,搭建内网安装源。
所幸官方提供了镜像服务器rsync服务。
官方文档(但是存在错误):
*** RSYNC *** This mirror also supports rsync, so you can sync the packages from this mirror if you like to For Debian/Ubuntu: $ rync -avr --delete cloudstack.apt-get.eu:cloudstack/ubuntu . For RedHat/CentOS: $ rync -avr --delete cloudstack.apt-get.eu:cloudstack/rhel .
仔细看看我以为我看错了。。
其一,我不知道rync是个什么情况,可能是打字错误。
其二,坑爹的是同步命令中,只包含一个“:”。
熟悉rsync的都应该知道,它有六种命令模式:
1: rsync [OPTION]… SRC DEST 拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup 2: rsync [OPTION]… SRC [USER@]HOST:DEST 使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src 3: rsync [OPTION]… [USER@]HOST:SRC DEST 使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data 4: rsync [OPTION]… [USER@]HOST::SRC DEST 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av [email protected]::www /databack 5: rsync [OPTION]… SRC [USER@]HOST::DEST 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack [email protected]::www 6: rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST] 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://172.16.78.192/www
所以,如果按照官方给出的命令去做的话你会发现会提示让你输入远端服务器的用户密码:
[darren@www root]$ rsync -avr –delete cloudstack.apt-get.eu:cloudstack/ubuntu . [email protected]’s password: [darren@www root]$ rsync -avr –delete cloudstack.apt-get.eu:cloudstack/rhel . [email protected]’s password:
而且登录帐号是你当前机器的登录帐号哟,所以这不是扯淡么。。。
二、开始干活(同步官方源):
$ mkdir /opt/cloudstack $ cd /opt/cloudstack For Debian/Ubuntu: $ rsync -avr --delete cloudstack.apt-get.eu::cloudstack/ubuntu . For RedHat/CentOS $ rsync -avr --delete cloudstack.apt-get.eu::cloudstack/rhel . 备注:rsync 参数解释:-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;-v 传输时的进度等信息;
三、搭建本地源服务:
将同步下来的cloudstack目录放入网页(apache,nginx)根目录下面。#RHEL/CentOS: $ cat /etc/yum.repos.d/cloudstack.repo [cloudstack] name=cloudstack baseurl=http://你的源服务器/cloudstack/rhel/$releasever/ enabled=1 gpgcheck=0 $yum install createrepo $createrepo /opt/cloudstack/rhel/$releaserver/ $RHEL/CentOS $ yum clean all $ yum update $ yum makecache #Debian/Ubuntu: $ echo "deb http://你的源服务器/cloudstack/ubuntu $(lsb_release -s -c) 4.2" > /etc/apt/sources.list.d/cloudstack.list $ apt-get update 备注:当然你也可以选择ftp或者本地目录的方式。
四、扯完了
其实好像没什么技术含量。。。基本上搭建cloudstack环境官方源+RHEL/CentOS 的iso镜像做本地源就可以搞定了。除了需要额外安装一个“jakarta-commons-daemon-jsvc” 软件。
选择把cloudstack的源同步到本地也为了增加工作效率。