• cobbler绑定MAC批量安装操作系统


    1,安装epel

    手动安装(https://fedoraproject.org/wiki/EPEL) wget http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm

    rpm -Uvh /root/Desktop/epel-release-7-9.noarch.rpm

    2,安装cobbler以及相关包

    yum -y install cobbler httpd xinetd tftp-server yum-utils rsync dhcp

    如果没有网络的情况下下载并手动安装cobbler,需要以下几个依赖包:

    cobbler.x86_64 0:2.8.0-4.el7
    PyYAML.x86_64 0:3.10-11.el7 libyaml.x86_64 0:0.1.4-11.el7_0
    mod_wsgi.x86_64 0:3.4-12.el7_0 python-cheetah.x86_64 0:2.4.4-5.el7.centos
    python-markdown.noarch 0:2.4.1-1.el7.centos python-pillow.x86_64 0:2.0.0-19.gitd1c6db8.el7
    python-pygments.noarch 0:1.4-9.el7 python2-simplejson.x86_64 0:3.10.0-1.el7 )


    3, 关闭selinux,firewall

     

     


    4, 启动httpd,cobblerd,dhcp

      systemctl start httpd|cobblerd

      此时启动dhcp会有问题

     


    5, 执行cobbbler check进行检查,发现很多问题,需要去一一进行修改和配置!

    修改cobbler配置文件settings
    1,编辑/etc/cobbler/settings文件,找到 server选项,修改为适当的ip地址,本实例配置ip为:192.168.30.79
    2,编辑/etc/cobbler/settings文件,找到 next_server选项,修改为适当的ip地址,本实例配置ip为:192.168.30.79
    3,编辑/etc/xinetd.d/tftp文件,将文件中的disable字段的配置由yes改为no
    4,编辑/etc/xinetd.d/rsync文件,将文件中的disable字段的配置由yes改为no(这个在centos7中有所区别,不用修改)
    5,提示说debmirror没安装。如果不是安装 debian之类的系统,此提示可以忽略,如果需要安装,下载地址为:
    http://rpmfind.net/linux/rpm2html/search.php?query=debmirror
    6,修改cobbler用户的默认密码,可以使用如下命令生成密码,并使用生成后的密码替换/etc/cobbler/settings中的密码。生成密码命令:
    openssl passwd -1 -salt 'random-phrase-here' 'root#$'
    其中“random-phrase-here”为干扰码,然后把生成的密码添加到配置文件对应的字段下,注意这里的密码为cobbler客户端默认的登录密码
    所有提示全部fix之后,执行
    /etc/init.d/cobblerd restart



    /etc/cobbler/settings manage_dhcp: 1 设置cobbler管理DHCP(本次安装这里配置为0,单独配置dhcp文件)
    manage_tftpd: 1 设置cobbler管理tftp
    manage_rsync: 1 设置cobbler管理rsync


    6, 配置DHCP

     

     

    如果用cobbler进行配置,可以直接在/etc/cobbler/dhcp.template 中进行配置,本次采用单独管理dhcp的方式。
    注意的:一般在数据的机房中不允许有dhcp的存在,因为极有可能有大量的同一网段而且不属于你家的机器此时正处于获取IP地址的状态。所以dhcp中
    的地址池必须关闭,否则后果不堪设想!
    vim /etc/dhcp/dhcpd.conf

    allow booting;
    allow bootp;
    
    ignore client-updates;
    set vendorclass = option vendor-class-identifier;
    
    option pxe-system-type code 93 = unsigned integer 16;
    
    subnet 192.168.30.0 netmask 255.255.255.0 {
    	 option routers             192.168.30.254;        # 注意这个网关要根据自己的环境统一配置
    #     option domain-name-servers 192.168.1.1;
    	 option subnet-mask         255.255.255.0;
    #     range dynamic-bootp        192.168.30.1 192.168.1.1;
    	 default-lease-time         21600;
    	 max-lease-time             43200;
    	 next-server                192.168.30.79;
    	 class "pxeclients" {
    		  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    		  if option pxe-system-type = 00:02 {
    				  filename "ia64/elilo.efi";
    		  } else if option pxe-system-type = 00:06 {
    				  filename "grub/grub-x86.efi";
    		  } else if option pxe-system-type = 00:07 {
    				  filename "grub/grub-x86_64.efi";
    		  } else {
    				  filename "pxelinux.0";
    		  }
    	 }
    
    }
    
    group {
    host generic1 {
    	hardware ethernet A4:DC:BE:F2:06:31;
    	fixed-address 192.168.30.50;
    		}
    host generic2 {
    	hardware ethernet 7C:A2:3E:8C:FD:84;
    	fixed-address 192.168.30.51;
    		}
    	}
    
    注意这里的generic*,主机和主机之间不同重复,否则会报错!


    7, 此时重启相关服务。

    systemctl restart httpd
    systemctl restart xinetd.service
    systemctl restart dhcpd.service
    cobblerd.service


    8, 挂载镜像

    ***默认:/var/www/cobbler/目录下 ks_mirror是放镜像的,repo_mirror是放网上download下来的各种源的

    1、创建目录
    [root@lhl1 cobbler]# mkdir -p /var/OS/BCLinux/x86_64/dvd/(此目录用于放置对应的ISO镜像,本次为直接挂载光盘,所以用不到此目录)
    [root@lhl1 cobbler]# mkdir -p /var/ISO/BCLinux/x86_64/dvd/

    2、挂载镜像
    mount -o loop /dev/cdrom /var/ISO/BCLinux/x86_64/dvd/

    3、从DVD中导入OS数据

    [root@lhl1 cobbler]# cobbler import --path=/var/ISO/BCLinux/x86_64/dvd/ --name=BCLinux --arch=x86_64
    这里需要耐心等待几分钟......



    4、列出导入后配置
    [root@lhl1 cobbler]# cobbler list
    distros:
    BCLinux-x86_64

    profiles:
    BCLinux-x86_64

    systems:

    repos:

    images:

    mgmtclasses:

    packages:

    files:

    9, 还有几个需要注意的点


    1,
    修改/etc/cobbler/settings中的pxe_just_once: 0改成1, 这样可以这样只会安装一次,避免重复安装
    然后执行 cobbler sync ,使修改的配置生效!

    2,
    修改pxe默认启动顺序:var/lib/tftpboot/pxelinux.cfg/default(客户端获取IP地址之后在准备安装之前默认从本地启动)

    DEFAULT menu
    PROMPT 0
    MENU TITLE Cobbler | http://cobbler.github.io/
    TIMEOUT 200
    TOTALTIMEOUT 6000
    #ONTIMEOUT local
    ONTIMEOUT BCLinux-x86_64
    
    LABEL local
    MENU LABEL (local)
    MENU DEFAULT
    LOCALBOOT -1
    
    LABEL BCLinux-x86_64
    kernel /images/BCLinux-x86_64/vmlinuz
    MENU LABEL BCLinux-x86_64
    append initrd=/images/BCLinux-x86_64/initrd.img ksdevice=bootif lang= kssendmac text ks=http://192.168.30.79/cblr/svc/op/ks/profile/BCLinux-x86_64
    ipappend 2
    
     
    
    MENU end
    

      

    将ONTIMEOUT 修改成想要安装的系统名称(自己制作好的那个),否则客户端在启动安装的过程中会选择localhost导致安装失败。
    注意:这时修改之后重启客户端即可,切记重启之后一定不要执行:cobbler sync,否则修改的配置文件将失效。如果想要其永久性生效
    需要修改:vim /etc/cobbler/pxe/pxedefault.template,把上面的字段改为安装系统的名称:ONTIMEOUT BCLinux-x86_64
    service cobblerd restart

    默认的20秒过后就可以自动安装了 全自动无人值守!


    10, 定制ks文件,系统默认的ks文件为/var/lib/cobbler/kickstarts/sample_end.ks,但是默认不符合我们需要,所以得去定制。


    [root@localhost cobbler]# egrep -v '^#|^$' /var/lib/cobbler/kickstarts/BCLinux.ks

    auth --useshadow --enablemd5
    bootloader --location=mbr --boot-drive=sda
    #分区信息
    clearpart --all --initlabel 
    part biosboot --fstype=biosboot --size=2 --ondisk=sda # 注意这个比较特殊,很多操作系统用不到!根据实际情况而定
    part /var --fstype="ext4" --ondisk=sda --size=102400
    part /opt --fstype="ext4" --ondisk=sda --size=122880
    part /home --fstype="ext4" --ondisk=sda --size=51200
    part /tmp --fstype="ext4" --ondisk=sda --size=51200
    part swap --fstype="swap" --ondisk=sda --size=30720
    part / --fstype="ext4" --ondisk=sda --size=20480
    part /boot --fstype="ext4" --ondisk=sda --size=500
    part /usr --fstype="ext4" --ondisk=sda --size=81920
    part /data --fstype="ext4" --grow --size=1
    
    text
    firewall --enabled
    firstboot --disable
    keyboard us
    lang en_US
    # 从哪里启动
    url --url=$tree
    $yum_repo_stanza
    $SNIPPET('network_config')
    reboot
    rootpw --iscrypted $default_password_crypted
    selinux --disabled
    skipx
    timezone Asia/Shanghai
    install
    zerombr
    %pre
    $SNIPPET('log_ks_pre')
    $SNIPPET('kickstart_start')
    $SNIPPET('pre_install_network_config')
    $SNIPPET('pre_anamon')
    %end
    
    # 定制安装包,安装包时,前面带@符号的表示包组,安装单个包只需要写包名即可
    %packages
    $SNIPPET('func_install_if_enabled')
    vim
    net-tools
    java-1.8.0-openjdk
    gcc-c++
    %end
    %post --nochroot
    $SNIPPET('log_ks_post_nochroot')
    %end
    %post
    $SNIPPET('log_ks_post')
    $yum_config_stanza
    $SNIPPET('post_install_kernel_options')
    $SNIPPET('post_install_network_config')
    $SNIPPET('func_register_if_enabled')
    $SNIPPET('download_config_files')
    $SNIPPET('koan_environment')
    $SNIPPET('redhat_register')
    $SNIPPET('cobbler_register')
    $SNIPPET('post_anamon')
    $SNIPPET('kickstart_done')
    %end
    

      


    修改完成后一定要通过cobbler profile edit --name=BCLinux-x86_64 --distro=BCLinux-x86_64 --kickstart=/var/lib/cobbler/kickstarts/BCLinux.ks
    命令指定.ks文件,否则系统会找默认的ks文件。可以用cobbler report检查。

    补充:

    如果有多块网卡,需要监听其中一块的话,配置如下:
    vim /etc/sysconfig/dhcpd

    # $ cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
    # $ vi /etc/systemd/system/dhcpd.service
    # $ ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid <your_interface_name(s)>
    # 注意上面一步,写的时候没有不带"<>"这个符号,否则会报错!
    # $ systemctl --system daemon-reload
    # $ systemctl restart dhcpd.service

  • 相关阅读:
    经典面试题目C语言
    论C语言中二级指针和二维数组之间的区别
    判断单链表中是否有环找到环的入口节点
    论decltype和auto的区别
    在ubuntu下安装opencv
    C中有关引用和指针的异同
    (四)关于读文件的结束的判别方法(EOF和feof)以及区别
    (三)论sizeof与strlen之间的区别
    (二)C语言文本流和二进制流的区别
    (一)C的编译,printf,规范化
  • 原文地址:https://www.cnblogs.com/yang-ning/p/6613498.html
Copyright © 2020-2023  润新知