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
# 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=
# If any cobbler repo definitions were referenced in the kickstart profile, include them here.
repo --name=source-1 --baseurl=

# 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= --netmask= --gateway= --nameserver=, --onboot=on --ipv6=auto
# network --bootproto=dhcp --onboot=on --noipv6
# network --device team0 --activate --bootproto=static --ip= --netmask= --gateway= --nameserver= -teamslaves="p3p1'{\"prio\": -10, \"sticky\": true}',p3p2'{\"prio\": 100}'" --teamconfig="{\"runner\": {\"name\": \"activebackup\"}}"

# Reboot after installation

#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
# System timezone
# timezone  Asia/Shanghai
timezone --ntpservers=, Asia/Shanghai
# --nontp Disable automatic starting of NTP service

# Install OS instead of upgrade
# Clear the Master Boot Record
# 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 地址才能奏效。
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"
done &

curl "" -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 $?
    ifconfig -a | grep -i "$1" 2>/dev/null >/dev/null
    return $?
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)
    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')

# 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
  get_ifname 00:0C:29:48:30:63
  echo "network --device=$IFNAME --bootproto=static --ip= --netmask= --gateway=" >> /tmp/pre_install_network_config
# End pre_install_network_config generated code

# Enable installation monitoring


# %packages 指令也支持下面的选项:
# --nobase,不要安装@Base 组.如果想创建一个很小的系统,可以使用这个选项.
# --resolvedeps,选项已经被取消了.目前依赖关系可以自动地被解析.
# --ignoredeps,选项已经被取消了.目前依赖关系可以自动地被解析.
# --ignoremissing,忽略缺少的软件包或软件包组,而不是暂停安装来向用户询问是中止还是继续安装.
# 例如:%packages --ignoremissing
%packages --ignoremissing --nobase

# %post部分脚本系统安装后执行, DHCP配置网络没有配置dns服务器
%post --nochroot
set -x -v
exec 1>/mnt/sysimage/root/ks-post-nochroot.log 2>&1


set -x -v
exec 1>/root/ks-post.log 2>&1

# Start yum configuration
# curl "" --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=" >> /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 "" >> /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).

# 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/
    rm -f /etc/modprobe.conf
    mv /etc/ /etc/modprobe.conf
echo "TYPE=Ethernet" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736
echo "IPADDR=" >> /etc/sysconfig/network-scripts/cobbler/ifcfg-eno16777736
echo "NETMASK=" >> /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
# 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=" > /etc/profile.d/
echo "setenv COBBLER_SERVER" > /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 "" -o /root/cobbler.ks
curl "" -o /dev/null
# End final steps