docker cobbler批量部署Linux/windows系统(一)——筑梦之路

这里以centos7 为例说明。

docker安装:
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo systemctl start docker && sudo systemctl enable docker

docker-compose安装:
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

--------------------------------------------------------------------
文件目录结构:
docker-cobbler
    Centos-7.repo
    cobbler.env
    docker-compose.yml
    Dockerfile
    start.sh
    supervisord.d/conf.ini
------------------------------------------------------------------------
准备阿里云的yum源:
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7


编写Dockerfile

FROM centos:7.6.1810

MAINTAINER 434754018@qq.com

ENV COBBLER_VERSION 2.8.4

RUN rm -rf /etc/yum.repos.d/*.repo
ADD Centos-7.repo /etc/yum.repos.d/
RUN yum makecache fast && yum -y install wget epel-release && \
    wget -O /etc/yum.repos.d/cobbler28.repo http://download.opensuse.org/repositories/home:/libertas-ict:/cobbler28/CentOS_7/home:libertas-ict:cobbler28.repo && \
    yum -y install cobbler tftp-server dhcp openssl cobbler-web supervisor debmirror pykickstart && \
    yum -y update && \
    yum clean all

ADD supervisord.d/conf.ini /etc/supervisord.d/conf.ini
ADD start.sh /start.sh
RUN chmod +x /start.sh

CMD ["/start.sh"]

编写脚本start.sh:
#!/bin/bash

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 [ ! $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
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: $SERVER_IP/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/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/*
        /usr/sbin/apachectl
        /usr/bin/cobblerd

        cobbler sync
        cobbler get-loaders

        pkill cobblerd
        pkill httpd
        rm -rf /run/httpd/*
        
        exec supervisord -n -c /etc/supervisord.conf
fi

编写conf.ini:
[program:dhcpd]
;directory=/tmp
command=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
priority=999
autostart=true
autorestart=unexpected
startsecs=1
startretries=3
user=root
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log

[program:httpd]
;directory=/tmp
command=/usr/sbin/httpd -DFOREGROUND
priority=990
autostart=true
autorestart=unexpected
startsecs=1
startretries=3
;user=root
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log

[program:cobblerd]
;directory=/tmp
command=/usr/bin/cobblerd -F
priority=991
autostart=true
autorestart=unexpected
startsecs=1
startretries=3
;user=root
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log

[program:tftpd]
;directory=/tmp
command=/usr/sbin/in.tftpd -L -l -4 -a 0.0.0.0:69 -s /var/lib/tftpboot
priority=999
autostart=true
autorestart=unexpected
startsecs=1
startretries=3
;user=root
redirect_stderr=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log

编写docker-compose.yml:
cobbler:
  image: cobbler:2.8
  volumes:
    - /mnt:/mnt:ro
  env_file: cobbler.env
  net: "host"

编写cobbler.env环境变量文件:
#服务器IP地址
SERVER_IP=192.168.80.10

#装机后服务器的root密码
ROOT_PASSWORD=12345678

#指定批量装机需要获取的IP地址段
DHCP_RANGE=192.168.80.230 192.168.80.235

#指定DHCP的网段
DHCP_SUBNET=192.168.80.0

#指定DHCP的网关
DHCP_ROUTER=192.168.80.2

#指定DHCP的DNS地址
DHCP_DNS=223.5.5.5

------------------------------------------------------
1、首先更改`cobbler.env`变量文件里的变量信息  
2、把系统镜像挂载到本机的`/mnt`目录下  
3、运行cobbler容器:`docker-compose up -d`  
4、进入cobbler容器,配置装机系统:`docker exec -it dockercobbler_cobbler_1 bash`

-------------------------------------------------------
注意:
1.需要关闭selinux
2.需要开放端口80、443
3.web访问:https://ip/cobbler_web username:cobbler password:cobbler

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值