Teuthology架构
自动化测试框架流程大致如下:
软件组成
Teuthology 测试框架所使用到的软件组成如下:
- Jenkins 持续集成工具
- teuthology Ceph 测试套件
- shaman 查询提供软件包的 chacra 节点,水平扩展和调度 chacra 节点
- chacra 提供不同架构二进制包或文件的管理 REST API 接口
Teuthology部署
部署paddles/pulpito node
安装依赖
yum install git python-dev python-virtualenv postgresql postgresql-contrib postgresql-server-dev-all supervisor gcc epel-release
配置postgresql数据库
初始化数据库
postgresql-setup initdb
systemctl start postgresql //启动数据库
systemctl enable postgresql
postgresql安装并启动后,会自动生成postgres用户
su - postgres //进入该用户
-bash-4.2$ psql //进入数据库
postgres=# \password postgres //更改用户postgres的密码
//按照输出的提示输入密码即可
创建数据库实例paddles、shaman
postgres=#create database paddles; // 创建名为paddles的数据库
postgres=#create database shaman; // 创建名为shaman的数据库
postgres=#create database chacra; // 创建名为chacra的数据库
安装配置paddles
创建paddles用户,并克隆paddles项目
useradd -m paddles -g root -G root //新建用户 paddles
su - paddles //切换到paddles用户下
git clone https://github.com/ceph/paddles.git //克隆该项目
cd paddles
virtualenv ./virtualenv //创建python的沙盒环境
source ./virtualenv/bin/activate //进入沙盒环境
修改配置文件,paddles中有配置文件的例子,只需要复制一份并修改即可。
cp config.py.in config.py
需要修改的内容
job_log_href_templ= 'http://qa-proxy.ceph.com/teuthology/{run_name}/{job_id}/teuthology.log' # 将qa-proxy.ceph.com/teuthology改成自己对应日志服务器的地址
...
sqlalchemy = {
# You may use SQLite for testing
'url': ' postgresql://postgres:password@localhost/paddles',
# When you set up PostreSQL, it will look more like:
#'url': 'postgresql+psycopg2://USER:PASSWORD@DB_HOST/DB_NAME',
'echo': True,
'echo_pool': True,
'pool_recycle': 3600,
'encoding': 'utf-8'
}
修改/var/lib/pgsql/data/pg_hba.conf,解决初始化paddles环境时的报错Ident authentication failed。
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 trust
修改完后,保存并退出。然后安装相关依赖,初始化环境。
$pip install -r requirements.txt //安装相关依赖
$python setup.py develop // 初始化环境
$pecan populate config.py// 在postgresql创建paddles需要的表
配置数据迁移工具
$ cp alembic.ini.in alembic.ini
$ vi alembic.ini
sqlalchemy.url = postgresql://postgres:password@localhost/paddles
$alembic stamp head//触发迁移工具生效
通过supervisord部署paddles服务
#cat /etc/supervisord.d/paddles.ini
[program:paddles]
user=paddles
enviro