kickstart 示例
#platform=x86, AMD64, or Intel EM64T # System authorization information auth --useshadow --enablemd5 # System bootloader configuration bootloader --location=mbr # Partition clearing information clearpart --all --initlabel # Use text mode install text # Firewall configuration firewall --enabled --http --ssh --port=123:udp # Run the Setup Agent on first boot firstboot --disable # System keyboard keyboard us # System language lang en_US.UTF-8 --addsupport=zh_CN.UTF-8 # Use network installation url --url=http://192.168.211.50/cblr/links/centos7mini-x86_64 # If any cobbler repo definitions were referenced in the kickstart profile, include them here. repo --name=source-1 --baseurl=http://192.168.211.50/cobbler/ks_mirror/centos7mini-x86_64 # Network information # # Using "new" style networking config, by matching networking information to the physical interface's # MAC-address # %include /tmp/pre_install_network_config network --bootproto=dhcp --device=eth0 --onboot=on --ipv6=auto # --device=eth0 由于网卡的名字可能是eth0、em1、eno16777736等,--device制定的与目标机器网卡不一致时,会报错无法启动,顾不指定--device # network --bootproto=static --ip=192.168.100.52 --netmask=255.255.255.0 --gateway=192.168.100.1 --nameserver=223.5.5.5,223.6.6.6 --onboot=on --ipv6=auto # network --bootproto=dhcp --onboot=on --noipv6 # network --device team0 --activate --bootproto=static --ip=10.34.102.222 --netmask=255.255.255.0 --gateway=10.34.102.254 --nameserver=10.34.39.2 -teamslaves="p3p1'{\"prio\": -10, \"sticky\": true}',p3p2'{\"prio\": 100}'" --teamconfig="{\"runner\": {\"name\": \"activebackup\"}}" # Reboot after installation reboot #Root password rootpw --iscrypted $1$allgo$sjkKoGvJXV2AuBNFeHyxP. # 加密密码生成 # 格式 openssl passwd -1 -salt 'random-phrase-here' 'your-password-here' # 其中 random-phrase-here 为干扰码 #add user # user --name=<username> [--groups=<list>] [--homedir=<homedir>] [--password=<password>] [--iscrypted] [--shell=<shell>] [--uid=<uid>] user --name="centos" --password="$1$allgo$sjkKoGvJXV2AuBNFeHyxP." --iscrypted --uid=1000 # SELinux configuration selinux --disabled # Do not configure the X Window System skipx # System timezone # timezone Asia/Shanghai timezone --ntpservers=110.75.186.247,cn.ntp.org.cn Asia/Shanghai # --nontp Disable automatic starting of NTP service # Install OS instead of upgrade install # Clear the Master Boot Record zerombr # Allow anaconda to partition the system as needed # autopart # CentOS6 不支持xfs # part / --asprimary --fstype="ext4" --size=20480 # part /boot --asprimary --fstype="ext4" --size=512 # part swap --asprimary --fstype="swap" --size=2048 # part /data --asprimary --fstype="ext4" --grow --size=1 # CentOS7 支持xfs # part / --asprimary --fstype="xfs" --size=20480 # part /boot --asprimary --fstype="xfs" --size=512 # part swap --asprimary --fstype="swap" --size=2048 # part /data --asprimary --fstype="xfs" --grow --size=1 # CentOS7 使用LVM分区 part /boot --fstype="xfs" --size=1024 part swap --fstype="swap" --size=2048 part pv.01 --size=1 --grow volgroup centos pv.01 logvol / --fstype="xfs" --vgname=centos --size=10240 --name=root logvol /data --fstype="xfs" --vgname=centos --size=1 --grow --name=data # %pre部分脚本(系统安装前执行)系统在解析 ks.cfg 文件之后立即运行,而且必须以 %pre 命令开头。注意,你在 %pre 部分可以访问网络;然而,名称服务(name service)在此时还没有被配置,因此只有 IP 地址才能奏效。 %pre set -x -v exec 1>/tmp/ks-pre.log 2>&1 # Once root's homedir is there, copy over the log. while : ; do sleep 10 if [ -d /mnt/sysimage/root ]; then cp /tmp/ks-pre.log /mnt/sysimage/root/ logger "Copied %pre section log to system" break fi done & curl "http://192.168.211.50/cblr/svc/op/trig/mode/pre/system/test" -o /dev/null # Start pre_install_network_config generated code # generic functions to be used later for discovering NICs mac_exists() { [ -z "$1" ] && return 1 if which ip 2>/dev/null >/dev/null; then ip -o link | grep -i "$1" 2>/dev/null >/dev/null return $? elif which esxcfg-nics 2>/dev/null >/dev/null; then esxcfg-nics -l | grep -i "$1" 2>/dev/null >/dev/null return $? else ifconfig -a | grep -i "$1" 2>/dev/null >/dev/null return $? fi } get_ifname() { if which ip 2>/dev/null >/dev/null; then IFNAME=$(ip -o link | grep -i "$1" | sed -e 's/^[0-9]*: //' -e 's/:.*//') elif which esxcfg-nics 2>/dev/null >/dev/null; then IFNAME=$(esxcfg-nics -l | grep -i "$1" | cut -d " " -f 1) else IFNAME=$(ifconfig -a | grep -i "$1" | cut -d " " -f 1) if [ -z $IFNAME ]; then IFNAME=$(ifconfig -a | grep -i -B 2 "$1" | sed -n '/flags/s/:.*$//p') fi fi } # Start of code to match cobbler system interfaces to physical interfaces by their mac addresses # Start eno16777736 # Configuring eno16777736 (00:0C:29:48:30:63) if mac_exists 00:0C:29:48:30:63 then get_ifname 00:0C:29:48:30:63 echo "network --device=$IFNAME --bootproto=static --ip=192.168.211.11 --netmask=255.255.255.0 --gateway=192.168.211.1 --hostname=test.mydomain.com" >> /tmp/pre_install_network_config fi # End pre_install_network_config generated code # Enable installation monitoring %end # %packages 指令也支持下面的选项: # --nobase,不要安装@Base 组.如果想创建一个很小的系统,可以使用这个选项. # --resolvedeps,选项已经被取消了.目前依赖关系可以自动地被解析. # --ignoredeps,选项已经被取消了.目前依赖关系可以自动地被解析. # --ignoremissing,忽略缺少的软件包或软件包组,而不是暂停安装来向用户询问是中止还是继续安装. # 例如:%packages --ignoremissing %packages --ignoremissing --nobase @Core vim wget %end # %post部分脚本系统安装后执行, DHCP配置网络没有配置dns服务器 %post --nochroot set -x -v exec 1>/mnt/sysimage/root/ks-post-nochroot.log 2>&1 %end %post set -x -v exec 1>/root/ks-post.log 2>&1 # Start yum configuration # curl "http://192.168.211.50/cblr/svc/op/yum/system/test" --output /etc/yum.repos.d/cobbler-config.repo # End yum configuration # Start post_install_network_config generated code # create a working directory for interface scripts mkdir /etc/sysconfig/network-scripts/cobbler cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/cobbler/ # set the gateway in the network configuration file grep -v GATEWAY /etc/sysconfig/network > /etc/sysconfig/network.cobbler echo "GATEWAY=192.168.211.1" >> /etc/sysconfig/network.cobbler rm -f /etc/sysconfig/network mv /etc/sysconfig/network.cobbler /etc/sysconfig/network # set the hostname in the network configuration file grep -v HOSTNAME /etc/sysconfig/network > /etc/sysconfig/network.cobbler echo "HOSTNAME=test.mydomain.com" >> /etc/sysconfig/network.cobbler rm -f /etc/sysconfig/network mv /etc/sysconfig/network.cobbler /etc/sysconfig/network # Also set the hostname now, some applications require it # (e.g.: if we're connecting to Puppet before a reboot). /bin/hostname test.mydomain.com # Start configuration for eno16777736 echo "DEVICE=eno16777736" > /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 echo "ONBOOT=yes" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 echo "HWADDR=00:0C:29:48:30:63" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 IFNAME=$(ip -o link | grep -i '00:0C:29:48:30:63' | sed -e 's/^[0-9]*: //' -e 's/:.*//') if [ -f "/etc/modprobe.conf" ] && [ $IFNAME ]; then grep $IFNAME /etc/modprobe.conf | sed "s/$IFNAME/eno16777736/" >> /etc/modprobe.conf.cobbler grep -v $IFNAME /etc/modprobe.conf >> /etc/modprobe.conf.new rm -f /etc/modprobe.conf mv /etc/modprobe.conf.new /etc/modprobe.conf fi echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 echo "IPADDR=192.168.211.11" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 echo "NETMASK=255.255.255.0" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736 # End configuration for eno16777736 sed -i 's/ONBOOT=yes/ONBOOT=no/g' /etc/sysconfig/network-scripts/ifcfg-eth* rm -f /etc/sysconfig/network-scripts/ifcfg-eno16777736 mv /etc/sysconfig/network-scripts/cobbler/* /etc/sysconfig/network-scripts/ rm -r /etc/sysconfig/network-scripts/cobbler if [ -f "/etc/modprobe.conf" ]; then cat /etc/modprobe.conf.cobbler >> /etc/modprobe.conf rm -f /etc/modprobe.conf.cobbler fi # End post_install_network_config generated code # Start download cobbler managed config files (if applicable) # End download cobbler managed config files (if applicable) # Start koan environment setup echo "export COBBLER_SERVER=192.168.211.50" > /etc/profile.d/cobbler.sh echo "setenv COBBLER_SERVER 192.168.211.50" > /etc/profile.d/cobbler.csh # End koan environment setup # begin Red Hat management server registration # not configured to register to any Red Hat management server (ok) # end Red Hat management server registration # Begin cobbler registration # skipping for system-based installation # End cobbler registration # Enable post-install boot notification # Start final steps curl "http://192.168.211.50/cblr/svc/op/ks/system/test" -o /root/cobbler.ks curl "http://192.168.211.50/cblr/svc/op/trig/mode/post/system/test" -o /dev/null # End final steps %end