一键cobbler批量安装脚本
前几天机房上架180台服务器,太多了,使用了cobbler批量安装,具体的看我上代码,我把配置cobbler的命令给堆积起来,也算是个脚本吧,欢迎拍砖指正,下面我上脚本:
1 #!/bin/bash 2 3 # 关闭selinux 4 setenforce 0 5 # 关闭firewalld防火墙 6 systemctl stop firewalld 7 # 下载阿里云镜像源 8 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 9 # 安装cobbler 10 yum install cobbler cobbler-web pykickstart httpd dhcp tftp-server -y 11 # 启动httpd、cobblerd 12 systemctl start httpd 13 systemctl start cobblerd 14 # 检查cobbler配置存在的问题,逐一解决 15 cobbler check 16 # 修改/etc/cobbler/settings文件中的server参数的值为提供cobbler服务的主机相应的IP地址或主机名,如server: 192.168.222.129 17 # 备份原文件 18 cp /etc/cobbler/settings{,.ori} 19 sed -i 's/server: 127.0.0.1/server: 192.168.222.129/' /etc/cobbler/settings 20 # 修改/etc/cobbler/settings文件中的next_server参数的值为提供PXE服务的主机相应的IP地址,如next_server: 192.168.222.129 21 sed -i 's/next_server: 127.0.0.1/next_server: 192.168.222.129/' /etc/cobbler/settings 22 23 # 修改/etc/xinetd.d/tftp文件中的disable参数修改为 disable = no 24 # 备份源文件 25 cp /etc/xinetd.d/tftp{,.ori} 26 sed -i 's/disable.*= yes/disable = no/g' /etc/xinetd.d/tftp 27 # 执行 cobbler get-loaders 命令即可;否则,需要安装syslinux程序包,而后复制/usr/share/syslinux/{pxelinux.0,memu.c32}等文件至/var/lib/cobbler/loaders/目录中 28 cobbler get-loaders 29 # 修改rsync配置文件 30 sed -i s/"disable.*= yes"/"disable = no"/g /etc/xinetd.d/rsync 31 # 开启rsync的服务开机自启动 32 systemctl enable rsyncd 33 # 开启rsync的服务 34 systemctl start rsyncd 35 # 生成密码来取代默认的密码,更安全 36 openssl passwd -1 -salt 'renjunjie' '123456' 37 sed -i s/'default_password_crypted:.*'/'default_password_crypted: "$1$renjunji$G7LpR5255qFguHrw7E0KP\/"'/g /etc/cobbler/settings 38 # 安装cman fence-agents 39 yum install -y cman fence-agents 40 # 其他一些没有提示报错的小修改 41 sed -i 's/manage_dhcp: 0/manage_dhcp: 1/g' /etc/cobbler/settings 42 sed -i 's/pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings 43 systemctl restart cobblerd.service 44 cobbler check 45 # 配置dhcp 46 cat > /etc/dhcp/dhcpd.conf <<EOF 47 subnet 192.168.222.0 netmask 255.255.255.0 { 48 option domain-name-servers 223.5.5.5; 49 option routers 192.168.222.1; 50 range dynamic-bootp 192.168.222.100 192.168.222.250; 51 option subnet-mask 255.255.255.0; 52 next-server $next_server; 53 default-lease-time 43200; 54 max-lease-time 86400; 55 } 56 EOF 57 # 同步cobbler的配置,可以看到同步干了哪些事 58 cobbler sync 59 # 设置开机自启动 60 systemctl enable dhcpd.service 61 systemctl enable rsyncd.service 62 systemctl enable tftp.service 63 systemctl enable httpd.service 64 systemctl enable cobblerd.service 65 66 systemctl restart dhcpd.service 67 systemctl restart rsyncd.service 68 systemctl restart tftp.service 69 systemctl restart httpd.service 70 systemctl restart cobblerd.service 71 72 # 挂在镜像 73 mount /dev/cdrom /mnt 74 # 导入镜像 75 cobbler import --path=/mnt/ --name=CentOS-7.0-x86_64 --arch=x86_64 76 # 查看镜像列表 77 cobbler distro list 78 # 镜像存放目录,cobbler会将镜像中的所有安装文件拷贝到本地一份,放在/var/www/cobbler/ks_mirror下的CentOS-6.6-x86_64目录下。因此/var/www/cobbler目录必须具有足够容纳安装文件的空间 79 cd /var/www/cobbler/ks_mirror/ 80 # 配置ks.cfg(使用centos7的镜像的时候,注意下方的ks.cfg要在安装包那里删除掉@server-policy,这玩意在7没有的 81 cd /var/lib/cobbler/kickstarts/ 82 mkdir CentOS-7.0-x86_64.cfg 83 cat CentOS-7.0-x86_64.cfg <<EOF 84 # kickstart template for Fedora 8 and later. 85 # (includes %end blocks) 86 # do not use with earlier distros 87 88 #platform=x86, AMD64, or Intel EM64T 89 # System authorization information 90 #auth --useshadow --enablemd5 91 authconfig --enableshadow --passalgo=sha512 92 # System bootloader configuration 93 bootloader --location=mbr --driveorder=sda --append="nomodeset crashkernel=auto rhgb quiet" 94 # Partition clearing information 95 clearpart --all --initlabel 96 # Use text mode install 97 text 98 # Firewall configuration 99 firewall --disabled 100 # Run the Setup Agent on first boot 101 firstboot --disable 102 # System keyboard 103 keyboard us 104 # System language 105 lang en_US 106 # Use network installation 107 url --url=$tree 108 # If any cobbler repo definitions were referenced in the kickstart profile, include them here. 109 $yum_repo_stanza 110 # Network information 111 $SNIPPET('network_config') 112 # Reboot after installation 113 reboot 114 logging --level=info 115 116 #Root password 117 rootpw --iscrypted $default_password_crypted 118 # SELinux configuration 119 selinux --disabled 120 # Do not configure the X Window System 121 skipx 122 # System timezone 123 timezone Asia/Shanghai 124 # Install OS instead of upgrade 125 install 126 # Clear the Master Boot Record 127 zerombr 128 # Allow anaconda to partition the system as needed 129 #autopart 130 part /boot --fstype=ext4 --asprimary --size=200 131 part swap --asprimary --size=1024 132 part / --fstype=ext4 --grow --asprimary --size=200 133 134 %pre 135 $SNIPPET('log_ks_pre') 136 $SNIPPET('kickstart_start') 137 $SNIPPET('pre_install_network_config') 138 # Enable installation monitoring 139 $SNIPPET('pre_anamon') 140 %end 141 142 %packages 143 @base 144 @compat-libraries 145 @core 146 @debugging 147 @development 148 @dial-up 149 @hardware-monitoring 150 @performance 151 sgpio 152 device-mapper-persistent-data 153 systemtap-client 154 tree 155 lrzsz 156 telnet 157 nmap 158 dos2unix 159 %end 160 161 %post --nochroot 162 $SNIPPET('log_ks_post_nochroot') 163 %end 164 165 %post 166 $SNIPPET('log_ks_post') 167 # Start yum configuration 168 $yum_config_stanza 169 # End yum configuration 170 $SNIPPET('post_install_kernel_options') 171 $SNIPPET('post_install_network_config') 172 $SNIPPET('func_register_if_enabled') 173 $SNIPPET('download_config_files') 174 $SNIPPET('koan_environment') 175 $SNIPPET('redhat_register') 176 $SNIPPET('cobbler_register') 177 # Enable post-install boot notification 178 $SNIPPET('post_anamon') 179 # Start final steps 180 $SNIPPET('kickstart_done') 181 # End final steps 182 %end 183 EOF 184 # 编辑profile,修改关联的ks文件 185 cobbler profile edit --name=CentOS-7.0-x86_64 --kickstart=/var/lib/cobbler/kickstarts/CentOS-7.0-x86_64.cfg 186 187 # 同步下cobbler数据,每次修改完都要镜像同步 188 cobbler sync 189 # 定制化安装 190 cobbler system add --name=ren --mac=00:0C:29:2E:FD:0E --profile=CentOS-7.0-x86_64 --ip-address=192.168.222.120 --subnet=255.255.255.0 --gateway=192.168.222.1 --interface=eno16777736 --static=1 --hostname=linux_node --name-servers="223.5.5.5" 191 cobbler system list 192 cobbler sync