设为首页 收藏本站
查看: 1154|回复: 0

[经验分享] Cobber构建yum仓库

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-5 08:59:00 | 显示全部楼层 |阅读模式
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-mitaka \
--mirror= \
--arch=x86_64 --breed=yum



同步存储库:
1
# cobbler reposync



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

如何在自动安装的机器上添加repo文件呢,可以使用下面的命令,指定profile:
1
# cobbler profile edit --name=CentOS-7-x86_64 --repo="openstack-mitaka"



修改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的服务器。


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()



直接执行上面的脚本就可以调用cobbler的api将需要安装的信息自动添加到cobbler中。
1
2
3
4
5
# python cobbler_python.py
{'comment': [], 'result': True}
# cobbler system list
   cobbler-node2
   cobbler-api-test






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-309785-1-1.html 上篇帖子: 升级CentOS 6.5中VIM7.2到VIM7.4 下篇帖子: 在域环境下搭建samba服务器 仓库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表