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

[经验分享] 用docker快速布署cobbler装机系统

[复制链接]

尚未签到

发表于 2019-2-21 10:58:38 | 显示全部楼层 |阅读模式
  好久没写过博客了,上来撸一篇。。。。
最近在看K8s,刚好机房环境里需要加个cobbler 装机系统,便有了下面的折腾
  环境:原有cobbler几台(因有多个机房,故有多个cobbler)
需求:新机房需要cobbler 自动装机系统
  先做个cobbler2.8的镜像(为什么用2.8版本?2.6版本安装exsi会报错)
  docker file 参照https://github.com/jasonlix5/docker-cobbler 修改

FROM bd2fd3afdba2
ADD cobbler-*  /
ADD entrypoint.sh  /entrypoint.sh
ADD supervisord.d/conf.ini /etc/supervisord.d/conf.ini
RUN yum localinstall cobbler-2.8.0-4.el7.x86_64.rpm cobbler-web-2.8.0-4.el7.noarch.rpm -y  && yum install  tftp-server dhcp supervisor -y && yum clean a
ll &&  rm -rf /var/cache/yum/* /tmp/*
CMD /entrypoint.sh
  其中bd2fd3afdba2是我自己的centos7镜像,需要更改为自己环境的镜像 ,比如官方的镜像

cat entrypoint.sh
#!/bin/sh
set -ex
if [ ! $SERVER_IP ]
then
echo "Please use $SERVER_IP set the IP address of the need to monitor."
exit 1
elif [ ! $DHCP_RANGE ]
then
echo "Please use $DHCP_RANGE set up DHCP network segment."
exit 1
elif [ ! $NEXT_SERVER ]
then
echo "Please use $NEXT_SERVER set TFTP PXE booting ."
exit 1
elif [ ! $ROOT_PASSWORD ]
then
echo "Please use $ROOT_PASSWORD set the root password."
exit 1
elif [ ! $DHCP_SUBNET ]
then
echo "Please use $DHCP_SUBNET set the dhcp subnet."
exit 1
elif [ ! $DHCP_ROUTER ]
then
echo "Please use $DHCP_ROUTER set the dhcp router."
exit 1
elif [ ! $DHCP_DNS ]
then
echo "Please use $DHCP_DNS set the dhcp dns."
exit 1
elif [ ! $COBBLER_MASTER ]
then
echo "Please use $COBBLER_MASTER set the cobbler master to rsync."
exit 1
else
PASSWORD=`openssl passwd -1 -salt hLGoLIZR $ROOT_PASSWORD`
sed -i "s/^server: 127.0.0.1/server: $SERVER_IP/g" /etc/cobbler/settings
sed -i "s/^next_server: 127.0.0.1/next_server: $NEXT_SERVER/g" /etc/cobbler/settings
sed -i 's/pxe_just_once: 0/pxe_just_once: 1/g' /etc/cobbler/settings
sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings
sed -i "s#^default_password.*#default_password_crypted: \"$PASSWORD\"#g" /etc/cobbler/settings
sed -i 's/$pxe_menu_items//' /etc/cobbler/pxe/pxedefault.template
sed -i "s/192.168.1.0/$DHCP_SUBNET/" /etc/cobbler/dhcp.template
sed -i "s/192.168.1.5/$DHCP_ROUTER/" /etc/cobbler/dhcp.template
sed -i "s/192.168.1.1;/$DHCP_DNS;/" /etc/cobbler/dhcp.template
sed -i "s/192.168.1.100 192.168.1.254/$DHCP_RANGE/" /etc/cobbler/dhcp.template
sed -i "s/^#ServerName www.example.com:80/ServerName localhost:80/" /etc/httpd/conf/httpd.conf
sed -i "s/service %s restart/supervisorctl restart %s/g" /usr/lib/python2.7/site-packages/cobbler/modules/sync_post_restart_services.py
rm -rf /run/httpd/*
apachectl
cobblerd
cobbler sync
cobbler replicate --master=$COBBLER_MASTER --distros=* --profiles=*
pkill cobblerd
pkill httpd
rm -rf /run/httpd/*
exec supervisord -n -c /etc/supervisord.conf
fi

  supervisord 管理进程

supervisord.d/conf.ini     
参照       https://github.com/jasonlix5/docker-cobbler/blob/master/supervisord.d/conf.ini                                                                                                   

  docker build -t cobbler:2.8 .
  把创建的镜像上传到自己的私有仓库
  为了使用原cobbler资源,避免大量的文件同步
新的cobbler 挂载旧cobbler的几个文件和目录
挂载文件(web_api 用户名密码)

/etc/cobbler/users.digest
NFS共享文件夹,只读
/var/www/cobbler/repo_mirror/
/var/www/cobbler/ks_mirror/
/var/lib/cobbler/loaders

  在原有的cobbler 安装nfs服务,用于新的cobbler挂载
NFS 服务器

yum install rpcbind nfs-utils -y
vim /etc/exports
/opt/data/cobbler/ks_mirror  10.0.0.0/8(ro,sync)
/opt/data/cobbler/repo_mirror  10.0.0.0/8(ro,sync)
/var/lib/cobbler/loaders      10.0.0.0/8(ro,sync)
  启动NFS服务
  在新的cobbler主机上安装docker-ce
  启动docker
  copy kubelet 二进制文件到/bin/kubelet
  创建kubelet监视目录

mkdir /etc/kubernetes/manifests/
  启动kubelet

nohup kubelet --allow-privileged=true --pod-manifest-path=/etc/kubernetes/manifests/   --fail-swap-on=false --pod-infra-container-image=10.8.15.127:5000/rhel7/pod-infrastructure:latest --v=2 --runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice &
  最好放supervisord 管理
  把老的web api密码文件 放到主机 /etc/cobbler/users.digest ,我这样做是保持用户名密码一致,看官需要根据自己的环境更改
新建cobbler配置文件

vim /etc/kubernetes/manifests/cobbler.yaml
apiVersion: v1
kind: Pod
metadata:
name: cobbler28
labels:
app: cobbler28
spec:
hostNetwork: true
containers:
- image: 10.8.15.127:5000/cobbler:2.8
name: cobbler28
volumeMounts:
- mountPath: /etc/cobbler/users.digest
name: webaccess
- mountPath: /var/www/cobbler/repo_mirror
name: repo
- mountPath: /var/www/cobbler/ks_mirror
name: ksmirror
- mountPath: /var/lib/cobbler/loaders
name: loaders
env:
- name: SERVER_IP
value: "10.8.14.234"
- name: NEXT_SERVER
value: "20.8.14.234"
- name: ROOT_PASSWORD
value: "xxx"
- name: DHCP_RANGE
value: "20.8.14.230 20.8.14.235"
- name: DHCP_SUBNET
value: "20.8.14.0"
- name: DHCP_ROUTER
value: "20.8.14.234"
- name: DHCP_DNS
value: "20.8.14.234"
- name: COBBLER_MASTER
value: "10.8.15.234"
volumes:
- name: webaccess
hostPath:
path: /etc/cobbler/users.digest
type: File
readOnly: true
- name: ksmirror
nfs:
server: 10.20.10.61
path: "/var/www/cobbler/ks_mirror"
readOnly: true
- name: repo
nfs:
server: 10.20.10.61
path: "/var/www/cobbler/repo_mirror"
readOnly: true
- name: loaders
nfs:
server: 10.20.10.61
path: "/var/lib/cobbler/loaders"
readOnly: true
  注意上面的           DHCP_RANGE 等部分,我这里是cobbler配置了第二个20网段的ip,是为了避免分配Ip地址冲突
  COBBLER_MASTER 是需要同步的旧cobbler
  查看cobbler容器是否启动
docker ps
  docker logs cobbler-contain 查看同步是否完成
  同步完成后
使用登录cobbler_web查看Distros和Profiles 是否同步过来了

  添加api配置到自己的装机系统中

  done




运维网声明 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.yunweiku.com/thread-675258-1-1.html 上篇帖子: 认识docker-13352895 下篇帖子: 构建自己的Docker镜像
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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