Cobber构建yum仓库

简介:

Cobbler自定义安装系统时,我们更希望一次性预装好我们需要的基础环境,比如通过yum仓库来实现基础软件包的安装等。


Cobbler中,经常用到的文件和目录主要包含:

/var/www/cobbler : 基础镜像,使用的系统镜像放置在这个目录中。

/var/www/cobbler/repo_mirror:  仓库镜像路径。

/var/lib/cobbler/ : kickstarts文件的存储路径和脚本文件的存储路径。

/var/lib/cobbler/loaders: 系统启动文件

/etc/cobbler : cobbler配置文件路径


构建私有yum仓库

使用cobbler添加一个openstack的源存储库:

1
2
3
# cobbler repo add --name=openstack-newton \
--mirror=https: //mirrors .aliyun.com /centos/7/cloud/x86_64/openstack-newton/  \
--arch=x86_64 --breed=yum


如果需要添加epel源,可以使用相同的命令:

1
2
3
cobbler repo add --name=CentOS-7-x86_64-epel  \ 
--mirror=http: //mirrors .aliyun.com /epel/7Server/x86_64/  \
--arch=x86_64  --breed=yum

同步存储库:

1
# cobbler reposync

这样会将阿里云上对应路径的所有包下载到本地,并且会自动创建repo文件。


如何在自动安装的镜像上添加repo文件呢,可以使用下面的命令,指定profile:

1
# cobbler profile edit --name=CentOS-7-x86_64 --repo="openstack-newton"

修改kickstarts文件,在/var/lib/cobbler/kickstarts/CentOS-7-x86_64.cfg中加入yum的配置:

1
2
3
4
5
%post
systemctl disable postfix.service
 
%yum_config_stanza    # 配置yum源
%end

添加定时任务,定期同步repo,如:

1
# echo  "1 3 * * * /usr/bin/cobbler resposync --tries=3 --no-fail" >> /var/spool/root


Cobbler自动化安装系统

通过system 组件来实现IP地址和mac地址的对应关系,使主机自动识别安装定义好的系统和配置。

如在生产环境中,一般会通过mac地址来识别主机,然后指定安装的系统和环境配置。

例如需要定义一个主机的信息:

IP:192.168.1.200

hostname: node2

subnet: 255.255.255.0

gateway: 192.168.1.2

DNS: 192.168.1.2

首先记录采购的主机mac地址,如需要安装的服务器主机mac地址为:

00:50:56:3C:78:13


可以先通过cobbler system list 来查看当前已有的cobbler信息.

添加上面的主机信息到cobbler配置,执行下面的命令:

1
2
3
4
cobbler system add --name=cobbler-node2  --mac=00:50:56:3C:78:13  --profile=CentOS-7-x86_64  \
--ip-address=192.168.1.200 --subnet=255.255.255.0 --gateway=192.168.1.2  --interface=eth0 \
--static=1 -- hostname =node2  --name-servers= "192.168.1.2"  \
--kickstart= /var/lib/cobbler/kickstarts/CentOS-7-x86_64 .cfg

执行上命令后,可以使用list命令来查看是否已经添加了当前的信息:

1
2
# cobbler system list
    cobbler-node2

启动mac地址为00:50:56:3C:78:13的服务器,这样当此mac地址的服务器启动时会自动安装指定的系统。


Cobbler API的调用

可以使用python脚本来获取cobbler的一些参数和信息如获取一些基本信息等:

1
2
3
4
5
6
7
8
9
# cat cobbler_list.py 
#!/usr/bin/python
import  xmlrpclib
server = xmlrpclib.Server( "http://192.168.1.10/cobbler_api" )
print server.get_distros()
print server.get_profiles()
print server.get_systems()
print server.get_images()
print server.get_repos()

返回的是一个列表信息。可以通过前端调用展示。

http://cobbler.github.io/ 


我们可以使用python 调用cobbler API示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env python 
# -*- coding: utf-8 -*-
import  xmlrpclib 
class  CobblerAPI( object ):
     def  __init__( self ,url,user,password):
         self .cobbler_user =  user
         self .cobbler_pass  =  password
         self .cobbler_url  =  url
     
     def  add_system( self ,hostname,ip_add,mac_add,profile):
         '''
         Add Cobbler System Infomation
         '''
         ret  =  {
             "result" True ,
             "comment" : [],
         }
         #get token
         remote  =  xmlrpclib.Server( self .cobbler_url) 
         token  =  remote.login( self .cobbler_user, self .cobbler_pass) 
#add system
         system_id  =  remote.new_system(token) 
         remote.modify_system(system_id, "name" ,hostname,token) 
         remote.modify_system(system_id, "hostname" ,hostname,token) 
         remote.modify_system(system_id, 'modify_interface' , { 
             "macaddress-eth0"  : mac_add, 
             "ipaddress-eth0"  : ip_add, 
             "dnsname-eth0"  : hostname, 
         }, token) 
         remote.modify_system(system_id, "profile" ,profile,token) 
         remote.save_system(system_id, token) 
         try :
             remote.sync(token)
         except  Exception as e:
             ret[ 'result' =  False
             ret[ 'comment' ].append( str (e))
         return  ret
def  main():
     cobbler  =  CobblerAPI( "http://192.168.1.10/cobbler_api" , "cobbler" , "cobbler" )
     ret  =  cobbler.add_system(hostname = 'cobbler-api-test' ,ip_add = '192.168.1.201' ,mac_add = '00:50:56:3C:78:13' ,profile = 'CentOS-7-x86_64' )
     print  ret
if  __name__  = =  '__main__' :
     main()

修改main函数中的配置信息,直接执行上面的脚本就可以调用cobbler的api将需要安装的信息自动添加到cobbler中。

1
2
3
4
5
6
7
# python cobbler_python.py 
 
{ 'comment' : [],  'result' : True}   #返回true,说明执行成功。 
# cobbler system list
 
    cobbler-node2
    cobbler-api- test

这样当指定的服务器加电就可以自动化安装了。


Cobbler文档: https://www.ibm.com/developerworks/cn/linux/l-cobbler/ 



 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1878868

相关文章
|
3月前
|
缓存
详解CentOS8更换yum源后出现同步仓库缓存失败的问题
详解CentOS8更换yum源后出现同步仓库缓存失败的问题
124 0
|
6月前
|
Linux 应用服务中间件 nginx
CentOS7搭建yum源仓库(阿里源)
CentOS7搭建yum源仓库(阿里源)
1037 0
|
19天前
|
缓存 Linux 测试技术
搭建本地YUM仓库
在Redhat 9系统中,通过挂载系统安装盘到/mnt,然后创建本地YUM仓库以实现软件包管理。首先查看磁盘挂载情况,将ISO镜像挂载到/mnt。接着,备份`/etc/yum.repos.d/`目录内容,删除原有仓库,创建`loaclhost.repo`文件并配置指向/mnt中的Package目录。运行`yum clean all`清除缓存,`yum makecache`建立元数据。最后,成功通过新配置的本地仓库安装了bind软件及其依赖。
33 3
|
5月前
|
缓存
简易yum仓库搭建
简易yum仓库搭建,实验准备,获取yum仓库、安装httpd,客户机配置yum源,测试、验证
70 0
|
8月前
|
缓存 安全 网络协议
部署YUM仓库及NFS共享服务
部署YUM仓库及NFS共享服务
160 0
|
9月前
|
缓存 运维
【运维知识进阶篇】一键部署yum本地仓库
【运维知识进阶篇】一键部署yum本地仓库
281 0
|
11月前
|
分布式计算 Linux 5G
YUM仓库服务
YUM仓库服务
311 0
|
缓存 Linux 网络安全
|
网络安全 开发工具
部署YUM仓库以及如何使用PXE网络装机(下)
部署YUM仓库以及如何使用PXE网络装机(下)
75 0
部署YUM仓库以及如何使用PXE网络装机(下)
|
Linux
部署YUM仓库以及如何使用PXE网络装机(上)
部署YUM仓库以及如何使用PXE网络装机(上)
156 0
部署YUM仓库以及如何使用PXE网络装机(上)