Tags: teuthology ceph 自动化测试
ceph自动化测试环境teuthology的安装部署具体步骤
再次强调,本文所述均建立在Ubuntu14.0LTS系统之上,这是一个非常普通的系统,也是ceph官方推荐使用的。
本文中所克隆的源,有ceph官方的地址,也有H3C的地址,大家都可以自己选择,并无好坏之分,只是个参考。
本文从简到难,逐层安装,没搞懂的就搜索下,一步步装,不要跳着查看,那样反而会给自己造成麻烦,如果有什么概念上的问题,请参看上一篇文章。
关于我们:https://charpty.com
https://github.com/charpty
charpty@google.com
paddles的安装部署
你也可以按照官方教程进行安装,还是比较简单的。
https://github.com/ceph/paddles
前提:请安装好Ubuntu系统,在虚拟机上和物理机上均可,机器要可以上网,配置好apt-get源,使用163的源,或者sohu的都可以。
(1)按照系统级别依赖
配置好apt-get的源之后,通过执行简单命令即可安装所有依赖
apt-get install python-dev python-virtualenv postgresql postgresql-contrib postgresql-server-dev-all supervisor
# 如果你的机器没有安装一些我们所需要的基本工具,我并没有办法一一陈述
# 后续碰到了,你可以自行安装,我只能大概提到一些
# git,用于拉取代码
apt-get install git
# python环境,一般默认自带,没有的话可以搜索下安装Python
# pip easy_install,这都是Python中的模块,可自行搜索安装,很简单
(2)安装并配置postgresql数据库
这里我们安装9.3版本,该版本稳定成熟。
# 非常方便的安装方式
apt-get install postgresql-9.3
# 安装完成之后,会默认的创建一个用户postgres,这是postgresql的管理员账户
su – postgres
# 通过该命令进入sql控制台,类似于oracle的sqlplus
psql
然后你就会进入sql控制台,接下来你将输入sql命令完成一些基本配置
-- 第一件事情是为改用户设置密码,以后很多配置文件里面有用到
\password postgres
-- 然后输入你自己喜欢的密码即可,本文将统一采用‘1q2w3e’作为我们的密码
-- 如果你想更换密码,可以通过命令
-- alter user postgres with password '1q2w3e',很方便。
为自己的数据库的管理员账户配置好密码之后,现在你需要创建一个库的实例,就和oracle中的数据库实例类似,以提供给我们的paddles使用。本文将保持和ceph官方的统一,使用‘paddles’作为我们要创建的数据库名字。
create database paddles;
-- 通过'\l'命令,我们可以查看到我们刚刚创建好的数据库
\l
-- 然后我们退出sql控制台,或者你可以直接按ctrl+d
\q
然后我们回到root的操作模式下
# 为paddles的安装创建一个用户,并设置密码
# 本文中我们将创建名为‘paddles’的用户用于运行paddles
useradd -m paddles -g root -G root
# 为改账号设置密码
echo paddles:1q2w3e | chpasswd
# 创建完成之后,我们切换到paddles用户下操作
su - paddles
我们在创建paddles账号时并没有指定它的bash,如果你直接登录到paddles用户会有一些问题,所以我们都是直接先连接到root,然后再切换到paddles上即可。
# 从github上克隆我们需要的代码
git clone https://github.com/ceph/paddles.git
# 或者你可以使用我们的 git clone https://github.com/H3C/paddles.git
# 下载好之后,进入到下载的文件夹中,执行
# 该命令为创建Python引以为傲的沙盒环境
# 沙盒大概是指该沙盒中的环境是独立,与系统环境互不干扰
virtualenv ./virtualenv
# 配置我们的config.py文件,从模板中复制一份然后修改,这种方式会很常见
cp config.py.in config.py
vi config.py
# 我们主要改两行,一个是server配置项,改成我们自己要监听的地址
# 一般就是本机的ip,监听端口我选择了8080,你可以随意,只要各处统一就好
server = {
'port': '8080',
'host': '172.16.38.101'
}
# 还有一处要修改的就是数据库的地址,在最下方
# 我们使用的是postgresql数据库,这里我们将之前配置的数据库信息填上
# 注释掉默认的url行,增加我们自己的
# 这个位置其实就是Python语法中的map,别忘记在逗号
'url' : 'postgresql://postgres:1q2w3e@localhost/paddles',
# 进入沙盒环境
source ./virtualenv/bin/activate
# 然后你就会发现自己的命令行前面表面你已经进入到沙盒环境中了
# 安装沙盒需要的相关依赖
pip install -r requirements.txt
# 初始化环境
python setup.py develop
# 创建表,也即在postgresql创建和初始化paddles需要的表结构
# 这里我一度官方的修改会导致这一步出问题
# 所以如果你在这里也遇到了问题,你可以使用前面说的H3C的源代码
pecan populate config.py
# 配置数据迁移工具
cp alembic.ini.in alembic.ini
vi alembic.ini
# 这里主要配置数据库信息
sqlalchemy.url = postgresql://postgres:1q2w3e@localhost/paddles
# 触发迁移工具生效
alembic stamp head
到此为止,你已经完成了paddles需要的所有配置。当然,你现在还是处于沙盒环境之后,沙盒环境无非就是使用沙盒内的Python编译器执行你的命令而已,你甚至可以在./virtualenv/bin/中找到这些命令,有兴趣可以自行查看。
现在你需要启动你的paddles了,有两种情况。
- 为测试
仅仅是为了看一下,我的paddles配置正确了吗,能够正常运行了吗,那么你可以通过在沙盒中运行
pecan serve config.py
直接临时启动你的paddles,然后就可以通过你在config.py中配置的地址来查看你的成果了,按照我的配置的话,打开浏览器,输入地址:
http://172.16.38.101:8080/
然后,你就会看到一串JSON格式的数据返回给你了。
应该是类似于:
{"_help_": {"docs": "https://github.com/ceph/paddles", "extensions": {"Chrome": "https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc", "Firefox": "https://addons.mozilla.org/en-US/firefox/addon/jsonview/"}}, "last_job": "19 hours, 40 minutes, 22 seconds ago", "last_run": "21 hours, 1 minute, 28 seconds ago"}
这说明你的paddles已经可用了,它已经可以作为pulpito的存储后台来使用。
2. 正式使用
在install(1)中,我们已经说到要使用supervisord作为我们进程管理工具,这里我们将演示如何使用supervisord来管理我们的paddles。
(1)配置gunicorn
首先,我们要放弃使用pecan来运行我们的Python web服务,使用一个稍加封装的,更好的‘pecan’—- gunicorn,不必担心,你用不着重新安装它的环境,也一点都用不着去学,你只需要了解了解以下几个命令即可。
退到paddles用户环境,不退也可,都无所谓,只是编辑个文件而已
vi gunicorn_config.py
将该文件改为以下内容,甚至可能它原本就已经是以下内容了,那就不用改了
import os
import multiprocessing
_home = os.environ['HOME']
workers = multiprocessing.cpu_count() * 2
workers = 10
max_requests = 10000
#loglevel = 'debug'
accesslog = os.path.join(_home, "paddles.access.log")
#errorlog = os.path.join(_home, "paddles.error.log")
然后你就可以退出该用户了,关于如何使用supervisord管理它,我们将在后面的章节中弹到,就在本章节下第2个章节,很快。
pulpito的安装部署
特殊说明(1):
https://github.com/caibo2014/gooreplacer4chrome
改Web应用设计到谷歌的API,最好使用谷歌浏览器进行访问,当然,如果你是位经验丰富的程序员,相信你也有别的方法来代替Google-front-api等。
后面会相信阐述该问题的解决方法。
特殊说明(2):
我们建议将paddles和pulpito安装一台机器,使用不同的端口而已,因为这两个都是非常小而且不需要耗费太多资源的,也省去了安装很多依赖的问题
随着安装步骤的逐渐进行,前面已经提到的比较详细的简单步骤和操作技巧将一一被简化,相信你在阅读本文时也会渐渐适应这样的一种风格,简化后省去了你不必要的阅读量。
(1)安装依赖
和上面paddles需要的依赖是一样的,我们已经安装过了,这里不需要任何操作了。
(2)创建用户,并切换到对应的用户环境
useradd -m pulpito -g root -G root
echo pulpito:1q2w3e | chpasswd
su - pulpito
(3)克隆相应源码
git clone https://github.com/ceph/pulpito.git
(4)创建沙盒
virtualenv ./virtualenv
(5)编辑文件
cp config.py.in prod.py
vi prod.py
# 修改监听的地址和paddles的地址
server = {
'port': '8081',
'host': '172.16.38.101'
}
paddles_address = 'http://172.16.38.101:8080'
# 同时,我们需要关闭掉pulpito的debug模式
'debug': False,
(6)启动沙盒并安装依赖
source ./virtualenv/bin/activate
pip install -r requirements.txt
(7)启动pulpito
这个和上面的paddles一样,也分为两种情况。
- 为测试
# 直接在沙盒内
python run.py
然后打开浏览器,输入刚刚配置的监听地址:http://172.16.38.101:8081/
这个时候你应该能看到和http://pulpito.ceph.com/ 类似的界面,这说明你的pulpito也安装成功了。
2. 正式使用
正式使用把pulpito的运行线程交托给supervisord管理,下一章节讲解。
(8)关于打开界面非常慢,甚至卡住的情况
也就是前面特殊说明(1)提到的问题,这是由于该项目访问了谷歌的API的缘故,有经验的朋友直接查看本小节头给出的连接即可明白并解决问题了。
如果你没有处理过类似的情况,可直接将以下内容保存为:force_install_for_windows.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallForcelist]
"1"="paopmncpffekhhffcndhnmjincfplbma;https://github.com/