1.2 打包calamari-server

关于Calamari-server

Calamari-server 是 Calamari 管理平台的后端服务,是用Python 2.6+写的,使用 Saltstack, ZeroRPC, gevent, Django, django-rest-framework, graphite 等软件进行交互,并且实现了一个新的 REST API 用来与其他机器进行交互,早期的版本是使用的ceph的原始的CEPH REST API,新的Calamari 的 REST API 设计的更加全面,能够更好的跟 ceph 集群进行交互

安装需要用的依赖包

yum install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers git rpm-build gcc-c++ httpd
yum install postgresql-devel python-setuptools python-virtualenv redhat-lsb-core postgresql-libs checkpolicy selinux-policy-devel selinux-policy-doc

下载最新的Calamari-server和diamond代码

这个地方的diamond代码不是从官方拉取的,官方的那个版本有个jewel下无法显示iops的bug,下面的这个分支解决了这个问题

[root@calamari ~]# mkdir /root/calamari
[root@calamari ~]# cd /root/calamari/
[root@calamari calamari]# git clone https://github.com/ceph/calamari.git
Cloning into 'calamari'...
remote: Counting objects: 12625, done.
remote: Total 12625 (delta 0), reused 0 (delta 0), pack-reused 12625
Receiving objects: 100% (12625/12625), 21.01 MiB | 243.00 KiB/s, done.
Resolving deltas: 100% (6968/6968), done.
[root@lab8105 calamari]# git clone https://github.com/luinnar/Diamond.git --branch=calamari
Cloning into 'Diamond'...
remote: Counting objects: 18185, done.
remote: Total 18185 (delta 0), reused 0 (delta 0), pack-reused 18185
Receiving objects: 100% (18185/18185), 4.15 MiB | 147.00 KiB/s, done.
Resolving deltas: 100% (7164/7164), done.

修改默认的pip源

 [root@calamari ~]#  mkdir ~/.pip/
 [root@calamari ~]#  vim ~/.pip/pip.conf

添加下面的

 [global]
index-url = http://pypi.douban.com/simple

进入到calamari-server打包的目录

1.4 was significantly redesigned for use with different web UI, not calamari-clients and serves mostly as a daemon. Please continue using version 1.3 with calamari-clients at least for now. 这个是官方的开发者说的,也就是目前的UI就只能适配到1.3,所以不要用1.4的分支了

版本分支可以自己选择,我这里取最新的1.3的分支版本,这个版本支持jewel

[root@calamari ~]# cd /root/calamari/calamari 
git checkout -b origin/1.3

检查代码

[root@calamari calamari]# cat salt/srv/salt/_modules/ceph.py |grep mds_epoch
mds_epoch = status.get('fsmap', status.get('mdsmap',{})).get('epoch')'mds_map': mds_epoch,

是这样的就对了,可以看这两个issue1 issue2

处理spec文件(不懂官方改这个地方的意义)

[root@lab8106 calamari]# cp calamari-server.spec.in calamari.spec
修改calamari.spec文件
#Version: @VERSION@
#Release: @RELEASE@%{?dist}
Version: %{version}
Release: %{?revision}%{?dist}

处理一个 gevent 引用的BUG(现在可以不动了,官方修了bug)

默认的 requirements 里面的gevent里面写的 gevent>=1.0,这个在以前没有问题,但是现在gevent引入了bug,这个地方把版本锁定到一个已知的没问题的版本1.0.2,注意修改成以下版本号,路径如下

[root@calamarimake calamari]# grep "gevent" -R requirements/2.7/
requirements/2.7/requirements.production.txt:gevent==1.0.2
requirements/2.7/requirements.txt:gevent==1.0.2
requirements/2.7/requirements.txt:# Stock coverage doesn't play nicely with gevent

处理一个 M2crypto 引用的BUG(这个也可以先不处理)

安装这个版本会报错

[root@calamarimake requirements]# grep "M2c" -R *
2.6/requirements.txt:M2crypto==0.22.3
2.7/requirements.txt:M2crypto==0.22.3

可以修改为 M2crypto==0.21.1或者去掉版本号安装默认版本,这个地方还没测试打好的情况,之前M2crypto==0.21.1的版本没有问题,可能引入了新的属性提高了版本号,但是在编译的时候跟openssl的有一个相关的冲突

运行打包的命令打包calamari-server

进入到虚拟机以后使用build-rpm.sh脚本打包

[root@calamari ~]# ./build-rpm.sh 
target: dist
making dist tarball in ../calamari-server_1.3.3.tar.gz
7894 blocks
tar file made in ../calamari-server_1.3.3.tar.gz
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.W8DAbx
+ umask 022
+ cd /root/calamari/rpmbuild/BUILD
+ cd /root/calamari/rpmbuild/BUILD
+ rm -rf calamari-server-1.3.3
+ /usr/bin/gzip -dc /root/calamari/rpmbuild/SOURCES/calamari-server_1.3.3.tar.gz
···
···
Wrote: /root/calamari/rpmbuild/RPMS/x86_64/calamari-server-1.3.3-2_gd363ecf.el7.centos.x86_64.rpm
Wrote: /root/calamari/rpmbuild/RPMS/x86_64/calamari-server-debuginfo-1.3.3-2_gd363ecf.el7.centos.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.YKRnp6
+ umask 022
+ cd /root/calamari/rpmbuild/BUILD
+ cd calamari-server-1.3.3
+ /usr/bin/rm -rf /root/calamari/rpmbuild/BUILDROOT/calamari-server-1.3.3-2_gd363ecf.el7.centos.x86_64
+ exit 0

查询生成的rpm包

[root@calamarimake calamari]# ll /root/calamari/rpmbuild/RPMS/x86_64/*
-rw-r--r-- 1 root root 20282512 Aug 5 07:55 /root/calamari/rpmbuild/RPMS/x86_64/calamari-server-1.3.3-2_gd363ecf.el7.centos.x86_64.rpm
-rw-r--r-- 1 root root 3941608 Aug 5 07:55 /root/calamari/rpmbuild/RPMS/x86_64/calamari-server-debuginfo-1.3.3-2_gd363ecf.el7.centos.x86_64.rpm

生成的包就是这几个

  • calamari-server-1.3.3-2_gd363ecf.el7.centos.x86_64.rpm

打包diamond

[root@calamarimake calamari]# cd /root/calamari/Diamond/
[root@calamarimake Diamond]# make rpm
./version.sh > version.txt
./setup.py sdist --prune
/usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
 warnings.warn(msg)
running sdist
running check
warning: sdist: standard file not found: should have one of README, README.txt
···
···
+ umask 022
+ cd /root/calamari/Diamond/build/bdist.linux-x86_64/rpm/BUILD
+ cd diamond-3.4.68
+ rm -rf /root/calamari/Diamond/build/bdist.linux-x86_64/rpm/BUILDROOT/diamond-3.4.68-0.x86_64
+ exit 0
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.LmcZ6y
+ umask 022
+ cd /root/calamari/Diamond/build/bdist.linux-x86_64/rpm/BUILD
+ rm -rf diamond-3.4.68
+ exit 0
moving build/bdist.linux-x86_64/rpm/SRPMS/diamond-3.4.68-0.src.rpm -> dist
moving build/bdist.linux-x86_64/rpm/RPMS/noarch/diamond-3.4.68-0.noarch.rpm -> dist

查看生成的diamond包的路径

[root@calamarimake Diamond]# ll /root/calamari/Diamond/dist/*
-rw-r--r-- 1 root root 558680 Aug 5 08:05 /root/calamari/Diamond/dist/diamond-3.4.68-0.noarch.rpm
-rw-r--r-- 1 root root 290322 Aug 5 08:05 /root/calamari/Diamond/dist/diamond-3.4.68-0.src.rpm
-rw-r--r-- 1 root root 288517 Aug 5 08:05 /root/calamari/Diamond/dist/diamond-3.4.68.tar.gz

其他问题

如果下载carbon的时候报错

ownloading/unpacking carbon
  Cannot fetch index base URL https://pypi.python.org/simple/
  Could not find any downloads that satisfy the requirement carbon

这个就是上面提到需要更换pip源可以解决

出现失败怎么恢复环境

删除git分支(可以提前备份一份)
 [root@calamari ~]# rm -rf calamari
 [root@calamari ~]# rm -rf diamond

results matching ""

    No results matching ""