koji架构及环境搭建

该文章已生成可运行项目,

1. 序

本文和大家讨论下koji的搭建过程,顺便其中的一些概念我会做一些讲解,也是作为我koji环境搭建的一次记录。

2. 什么是koji

koji是一套构建rpm包的软件系统,自身也是基于mock来做rpm包的build操作。一条指令,koji也是可以在多台电脑上进行编译。同时koji也是能作为针对编译的包的一些管理,能够一目了然。话不多说,我们就开始搞起。

3. koji架构

3.1 koji组件结构

在这里插入图片描述如上图,我大概画出来了相关的组件及相关的关系。

  • koji-hub: 这个其实是整个koji架构的中心,负责着整个系统的维护和各个组件之间的数据交换。是一个xml-rpc的server,通过mod_wsgi模块挂载在apache上提供服务。接受client和web到来的请求,然后驱使其他组件完成构建工作,同时将数据存放到数据库中。
  • kojid:部署在要完成构建工作的相应机器上,可以部署到多个机器。主要负责从Koji-hub请求到任务进行处理,一般来讲就是构建任务
  • koji-web:主要提供给使用浏览器的一些接口,然后从上游(hub)获取数据传给浏览器
  • koji(client):命令行的客户端,输入指令与hub交互
  • kojira: 主要负责和仓库建立,仓库更新等相关事宜。这里仓库不是指数据库,是指rpm repo
  • Postgresql DB: 数据库,只有hub和他建立连接,并存取一些关系的数据,比如说账号信息,构建信息,repo的信息等等。

3.2 专业术语

  • Build: 对一个软件包的构建,指所有的不同体系架构(eg.x86)下的构建产物,比如: kernel-2.6.9-34.EL, glibc-2.3.4-2.19
  • Package: 其实就是包,并不是指某一次的build,因为我们build的产物是n(name)v(version)r(release),比如说ssh-client-5.x86_64.rpm,那么在koji里边Package就是ssh-client.
  • channel: 指builder获取构建人物的渠道
  • Host : 指运行kojid的构建机器
  • Tag和Target: tag是组织包的形式,每个tag拥有一系列可用的包,而且tag可以继承,target是在构建时使用,类似与mock里边指定的配置文件,target和tag的关系是,target关联一个build的tag和最终的tag,build的tag其实就是我们所说指定配置,而最终的tag是用来组织包(不同tag位于不同repo等)

4. 安装相关软件

  • Server端依赖的软件
httpd
mod_ssl
postgresql-server
mod_wsgi
  • build端依赖的软件
mock
rpm-build
createrepo
  • koji的相关组件
koji
koji-hub
koji-web
koji-builder
koji-utils

安装过程中可能会有一些问题,我们需要使用epel,因为koji的相关组件是epel源提供的,我们使用下边指令,或者自己配置相关yum源,然后再使用yum安装以上软件

yum install -y epel-release

我们将builder和server放在同一台主机,使用yum进行安装,安装细节这里不讲

5. 环境搭建

5.1 鉴权方式

koji中主要支持Kerberos和SSL两种方式进行身份验证,我们这里例子使用SSL

5.1.1 建立几个ssl凭证

建立/etc/pki/koji目录,我们把相关的凭证放到这里。

创建ssl.cnf,这个文件用来使用openssl生成key时的配置,拷贝以下内容到ssl.cnf

HOME                    = .
RANDFILE                = .rand

[ca]
default_ca              = ca_default

[ca_default]
dir                     = .
certs                   = $dir/certs
crl_dir                 = $dir/crl
database                = $dir/index.txt
new_certs_dir           = $dir/newcerts
certificate             = $dir/%s_ca_cert.pem
private_key             = $dir/private/%s_ca_key.pem
serial                  = $dir/serial
crl                     = $dir/crl.pem
x509_extensions         = usr_cert
name_opt                = ca_default
cert_opt                = ca_default
default_days            = 3650
default_crl_days        = 30
default_md              = sha256
preserve                = no
policy                  = policy_match

[policy_match]
countryName             = match
stateOrProvinceName     = match
organizationName        = match
organizationalUnitName  = optional
commonName              = supplied
emailAddress            = optional

[req]
default_bits            = 2048
default_keyfile         = privkey.pem
default_md              = sha256
distinguished_name      = req_distinguished_name
attributes              = req_attributes
x509_extensions         = v3_ca # The extensions to add to the self signed cert
string_mask             = MASK:0x2002

[req_distinguished_name]
countryName                     = Country Name (2 letter code)
countryName_default             = AT
countryName_min                 = 2
countryName_max                 = 2
stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Vienna
localityName                    = Loca
本文章已经生成可运行项目
评论 42
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值