@ Карта сайта News Автора!

Bog BOS: Установка Linux CentOS 7.4 для вычислительного узла (UEFI, PXE, kickstart)

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)

Последнее изменение файла: 2018.08.06
Скопировано с www.bog.pp.ru: 2024.04.20

Bog BOS: Установка Linux CentOS 7.4 для вычислительного узла (UEFI, PXE, kickstart)

Предварительно прочитайте несколько слов о RHEL 7 и CentOS 7.

Устанавливал в режиме UEFI с загрузкой по PXE удалённо с использованием KVM (или IPMI-KVM), kickstart.

Сервера на базе платформы H2000G (H2216XXKR2 и H2224XXLR2): двухсокетная материнская плата под Intel Xeon CPU E5-2667 v4, 2 диска (или SSD) SATA в программный RAID и LVM, встроенные 2 порта 1000Base-T на Intel I350 (модуль igb, eno1 и eno2, объединённые в группу bond0) или IOM плата Intel E10G42BTDA (модуль ixgbe, ens785f0 и ens785f1, объединённые в группу bond0)) в ручном режиме с балансировкой (mode=0, balance-rr, round-robin), предполагается подключить их к 2 коммутаторам Huawei в режиме SVF.

Аналогично поставил CentOS 7.5 на HP ProLiant DL365 Generation 1 (здесь нет UEFI, настройка PXE для ISOLINUX (pxelinux) описана в установке CentOS71), двухсокетная материнская плата под AMD Opteron 2220, 2 диска SAS RAID-1 с кещем и батареей в аппаратный Smart Array P400i (вместо cciss в CentOS7 используется модуль hpsa, для столь древнего устройства необходимы параметры модуля "hpsa.hpsa_allow_any=1 hpsa.hpsa_simple_mode=1"), встроенные 2 порта 1000Base-T на Broadcom Limited NetXtreme II BCM5708 Gigabit Ethernet (модуль bnx2, enp66s0 и enp68s0) - потом будут объединены в bond0.

Назначение сервера - вычислительный узел под Sun Grid Engine (входные узлы устанавливаются аналогично).

Предварительно развёртывается установочный диск CentOS 7.4 x86_64 Everything и обеспечивается анонимный доступ по протоколу FTP по адресу ftp://ftp/pub/CentOS7.4/base/x86_64.

Для каждого устанавливаемого сервера кладём файл для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/полное-имя-хоста.CentOS74.cfg

install 
url --url=ftp://ftp/pub/CentOS7.4/base/x86_64

#text
#autostep
cmdline
reboot
#halt
# сервер syslog должен принимать TCP:514
logging --level=info --host=syslog --port=514
firstboot --disabled
eula --agreed
# можно зайти на сервер во время установки (осторожно: открытый пароль доступен анонимусу)
sshpw --username=root пароль --plaintext

lang en_US.UTF-8 --addsupport=ru_RU.UTF-8
keyboard --vckeymap=ruwin_alt-UTF-8 --xlayouts='us,ru(typewriter)' --switch=grp:toggle
timezone  Europe/Moscow --utc --ntpservers=ntp1,ntp2
xconfig  --startxonboot

device ixgbe --opts=allow_unsupported_sfp=1
network --onboot yes --device=bond0 --bootproto=dhcp --hostname=имя --noipv6 --mtu=9000 --activate --bondslaves=eno1,eno2 --bondopts=mode=balance-rr
# MAC адресом bond0 прописывается MAC адрес eno1 (см. CentOS74.node.network_bond.include)
#network --onboot yes --device=bond0 --bootproto=dhcp --hostname=имя --noipv6 --mtu=9000 --activate --bondslaves=ens785f0,ens785f1 --bondopts=mode=balance-rr

firewall --disabled
# осторожно: зашифрованный пароль доступен анонимусу, заменить сразу после установки
rootpw --iscrypted $6$...
selinux --disabled
authconfig --enableshadow --passalgo=sha512 --enableldap --enableldapauth --enableldaptls --ldaploadcacert=ftp://ftp/pub/local/ca.crt \
   --ldapserver=ldap --ldapbasedn=dc=имя-предприятия --enablecache --enablesssd --enablesssdauth --enablecachecreds --enablelocauthorize
group --name=имя-группы --gid=номер-группы
# надо завести хотя бы одного пользователя, осторожно: зашифрованный пароль доступен анонимусу
user --name=имя-пользователя --gecos='Имя Пользователя' --groups=имя-группы --gid=номер-группы --uid 1064 --iscrypted --password '$6$...'

# всё стереть только на указанных явно дисках (лучше указать явно /dev/disk/by-id/ata-изготовитель_модель_серийник)
ignoredisk --only-use=/dev/sda,/dev/sdb
zerombr
clearpart --drives=/dev/sda,/dev/sdb --all


# не создаётся запись для менеджера загрузок UEFI и grub.cfg
#bootloader --location=none --driveorder=/dev/sda,/dev/sdb --boot-drive=/dev/sda
# MBR: указывается 1 boot-drive, а загрузчик прописывается на оба диска
# GPT: весь GRUB в ESP на оба диска
bootloader --location=mbr --driveorder=/dev/sda,/dev/sdb --boot-drive=/dev/sda

#reqpart # делает ESP только на 1 диске
partition raid.008001 --size=200 --asprimary --ondisk=/dev/sda
partition raid.008017 --size=200 --asprimary --ondisk=/dev/sdb
raid /boot/efi --fstype="efi" --level=1 --device=1 --label=ESP raid.008001 raid.008017

partition raid.008002 --size=1000 --asprimary --ondisk=/dev/sda
partition raid.008018 --size=1000 --asprimary --ondisk=/dev/sdb
raid /boot --fstype="ext4" --level=1 --device=2 --label=boot raid.008002 raid.008018

partition raid.008003 --size=100 --grow --asprimary --ondisk=/dev/sda
partition raid.008019 --size=100 --grow --asprimary --ondisk=/dev/sdb
raid pv.009001 --level=1 --device=3 raid.008003 raid.008019

volgroup system pv.009001

logvol / --fstype="ext4" --label=root --name=root --vgname=system --size=20000
logvol swap --fstype="swap" --name=swap --vgname=system --size=60000

# ставим сразу всё и обновления тоже
repo --name="CentOS74updates"  --baseurl=ftp://ftp/pub/CentOS7.4/updates/x86_64/ --cost=100
# может создать проблем при последующем обновлении
#repo --name="CentOS74cr"  --baseurl=ftp://ftp/pub/CentOS7.4/cr/x86_64/ --cost=50
repo --name="CentOS74extras"  --baseurl=ftp://ftp/pub/CentOS7.4/extras/x86_64/ --cost=100
repo --name="EPEL7"  --baseurl=ftp://ftp/pub/EPEL7/x86_64/ --cost=100
# с ходу ставит лишнего и проблемы с зависимостями
#repo --name="elrepo7" --baseurl=ftp://ftp/pub/elrepo7/elrepo/x86_64/ --cost=100

# убрать лишние сервисы и добавить нужные
services --disabled=autofs,alsa-state,avahi-daemon,bluetooth,pcscd,cachefilesd,colord,fancontrol,fcoe,firewalld,firstboot-graphical,gdm,httpd,initial-setup,initial-setup-text,initial-setup-graphical,initial-setup-reconfiguration,kdump,libstoragemgmt,ModemManager,tog-pegasus,tmp.mount,tuned \
         --enabled=bacula-fd,chronyd,edac,gpm,numad,rsyslog,sendmail,smartd,sm-client,sssd,zabbix-agent

%packages --instLangs en:en_US:en_US.UTF-8:en_US.utf8:ru:ru_RU:ru_RU.UTF-8:ru_RU.utf8
%include ftp://ftp/pub/kickstarts/CentOS74.node.packages.include
%end

%post --log=/var/log/anaconda/ks-post.log
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.systemd.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.grub2.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.users.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.CPU.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.VM.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.IPMI.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.network_bond.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.smartd_sdasdb.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.ld.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.local_fs.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.remote_fs.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.NFS.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.autofs.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.locate.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.tmpwatch.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.rpm.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.mail.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.ssh.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.syslog.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.bacula-fd.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.zabbix_agentd.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.SGE.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.abrtd.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.compatibility.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.environment-modules.include
%include ftp://ftp.cs.niisi.ras.ru/pub/kickstarts/CentOS74.node.links.include
%end

%addon com_redhat_kdump --disable
%end

Кладём файл со списком пакетов для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.packages.include

@base
bacula-client
...
yum-plugin-changelog
yum-plugin-tmprepo
yum-plugin-versionlock
...
@compat-libraries
@console-internet
@core
@debugging
@desktop-debugging
@development
compat-gcc-44
compat-gcc-44-c++
cvs
nscd
nss-pam-ldapd
openldap-clients
...
-ypbind
...
#ошибка multilib
-PackageKit.i686
-PackageKit-gtk3-module.i686
-PackageKit-glib.i686
-gnome-software.i686

# для 32-битных САПР-ов 
libX11.i686
libSM.i686
libXi.i686
libXrender.i686
libXrandr.i686
sssd-client.i686
zlib.i686
elfutils-libelf.i686
compat-libstdc++-33.i686
libXp.i686
libXmu.i686
glib2.i686
mesa-libGLU.i686
ncurses-libs.i686
libXScrnSaver.i686
libXft.i686
libXinerama.i686
libXcursor.i686
libjpeg-turbo.i686
gdbm.i686
gdbm-devel.i686
libtiff.i686
libXtst.i686
libmng.i686
readline.i686
libpng.i686
#openmotif22.i686
glibc-devel.i686
gd.i686
gd-devel.i686
#lcms-libs.i686
libcap.i686
libcap-devel.i686
mesa-dri-drivers.i686
#compat-readline5.i686
libdrm.i686
audit-libs.i686
libstdc++.i686
glibc.i686
libXpm.i686
#db4.i686
nss-softokn-freebl.i686
keyutils-libs.i686
libuuid.i686
libXt.i686
libXdamage.i686
libselinux.i686
mesa-private-llvm.i686
#compat-expat1.i686
libattr.i686
libXxf86vm.i686
gamin.i686
libgcc.i686
krb5-libs.i686
libICE.i686
libXext.i686
pam.i686
cracklib.i686
#compat-libtermcap.i686
expat.i686
freetype.i686
libxcb.i686
libXfixes.i686
libcom_err.i686
libpciaccess.i686
fontconfig.i686
#compat-libstdc++-296.i686
systemtap-sdt-devel.i686
mesa-libGL.i686
pam.i686
cracklib.i686
#compat-libtermcap.i686
expat.i686
freetype.i686
libxcb.i686
libXfixes.i686
libcom_err.i686
libpciaccess.i686
fontconfig.i686
#compat-libstdc++-296.i686
systemtap-sdt-devel.i686
mesa-libGL.i686
libXau.i686
#mesa-dri-filesystem.i686

# UEFI
efivar
efibootmgr
fwupdate
mokutil
pesign
flashrom

Кладём файл с настройками systemd для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.systemd.include

systemctl set-default multi-user.target

chmod u+x /etc/rc.d/rc.local

Кладём файл с настройками grub2 для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.grub2.include

sed -i 's/rhgb quiet/rd.shell ixgbe.allow_unsupported_sfp=1/' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

Кладём файл для заведения ненормальных локальных пользователей (основная часть пользователей заводится в LDAP) для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.users.include

# небезопасно
/usr/sbin/useradd -c "GECOS" -g sys -m -r -u идентификатор-пользователя -p '$9$...' имя-пользователя
echo "имя-группы:x:идентификатор:root,имя-пользователя" >> /etc/group

sed -i 's/\[sssd\]/enumerate = true\n\[sssd\]/' /etc/sssd/sssd.conf

Кладём файл с настройками ЦП для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.CPU.include

cat << EOF >> /etc/rc.d/rc.local
# cpu performance
#modprobe acpi_cpufreq
#modprobe powernow-k8
x86_energy_perf_policy performance
for cpu in /sys/devices/system/cpu/cpu[0-9]*
do
  echo performance > \$cpu/cpufreq/scaling_governor
done

# temperature sensors
#modprobe coretemp # грузится сам

mkdir /dev/cpuset
mount -t cpuset none /dev/cpuset

# not more than one memory node
#mount -t tmpfs -o remount,size=124G tmpfs /dev/shm

# not corrected until now (2.6.32-131.17.1.el6.x86_64)
#echo 0 > /proc/sys/vm/zone_reclaim_mode
EOF

Кладём файл с настройками виртуальной памяти для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.VM.include

cat << EOF >> /etc/sysctl.conf
vm.dirty_background_bytes = 100000000
vm.dirty_bytes = 400000000
vm.min_free_kbytes = 524288
EOF

Кладём файл с настройками IPMI для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.IPMI.include

cat << EOF >> /etc/rc.d/rc.local
# IPMI
##modprobe ipmi_msghandler
#modprobe ipmi_devintf
##modprobe si
EOF

Кладём файл с настройками сети (возможны варианты) для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.network_bond.include

cat << EOF >> /etc/sysctl.d/disableipv6.conf
net.ipv6.conf.eno1.disable_ipv6 = 1
net.ipv6.conf.eno2.disable_ipv6 = 1
net.ipv6.conf.bond0.disable_ipv6 = 1
EOF

cat << EOF >> /etc/sysctl.conf
# кто-то его включает обратно
net.ipv4.ip_forward = 0
EOF

# drivers
echo "options ixgbe allow_unsupported_sfp=1" >> /etc/modprobe.d/ixgbe.conf

sed -i 's/::1         localhost localhost.localdomain localhost6 localhost6.localdomain6/::1         localhost.localdomain localhost6 localhost6.localdomain6/' /etc/hosts

cat << EOF >> /etc/rc.d/rc.local
#network
ip -6 addr flush dev lo
ip -6 addr flush dev bond0

modprobe nf_conntrack_tftp
modprobe nf_conntrack_ftp
EOF

MYIP=`ip a show dev bond0|fgrep 'inet '|awk '{print $2}'|awk -F/ '{print $1}'`
MYMAC=`ip l show dev eno1|fgrep link/ether|awk '{print $2}'`
MYHOSTNAME=`cat /etc/hostname`

echo "MACADDR=$MYMAC" >> /etc/sysconfig/network-scripts/ifcfg-bond0

Кладём файл с настройками мониторинга S.M.A.R.T. (возможны варианты) для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.smartd_sdasdb.include

sed -i "s/DEVICESCAN -H -m root/#DEVICESCAN -H -m root/" /etc/smartmontools/smartd.conf
cat << EOF >> /etc/smartmontools/smartd.conf
/dev/sda -a -m root -I 9 -I 190 -I 194 -M exec /usr/libexec/smartmontools/smartdnotify
/dev/sdb -a -m root -I 9 -I 190 -I 194 -M exec /usr/libexec/smartmontools/smartdnotify
EOF

smartctl --set=wcache,off /dev/sda
smartctl --set=wcache,off /dev/sdb

Кладём файл с настройками динамического загрузчика для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.ld.include

echo "/usr/local/lib" >> /etc/ld.so.conf
echo "/usr/local/lib64" >> /etc/ld.so.conf
/sbin/ldconfig

Кладём файл с настройками локальных файловых систем для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.local_fs.include

/sbin/tune2fs -r 25000 -c -1 -i 0 /dev/system/root

Кладём файл с настройками удалённых файловых систем для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.remote_fs.include

mkdir /remote ...
cat << EOF >> /etc/fstab
сервер:/remote /remote nfs tcp,bg,hard,intr,rw,nosuid,nodev,exec,auto,nouser,async,_netdev,rsize=1048576,wsize=1048576,nfsvers=3 0 0
...
EOF

Кладём файл с настройками NFS для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.NFS.include

# NFS, недоделано
sed -i 's/#LOCKD_TCPPORT=32803/LOCKD_TCPPORT=4001/' /etc/sysconfig/nfs
sed -i 's/#LOCKD_UDPPORT=32769/LOCKD_UDPPORT=4001/' /etc/sysconfig/nfs
sed -i 's/RPCNFSDARGS=""/RPCNFSDARGS="--port 2049"/' /etc/sysconfig/nfs

cat << EOF >> /etc/sysconfig/nfs
RQUOTAD_PORT=4003
MOUNTD_PORT=4002
STATD_PORT=4000
EOF

Кладём файл с настройками автоматического монтирования для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.autofs.include

sed -i 's/+auto.master/#+auto.master/' /etc/auto.master

Кладём файл с настройками locate для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.locate.include

sed -i 's/udf usbfs/udf usbfs glusterfs zfs/' /etc/updatedb.conf

Кладём файл с настройками tmpwatch для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.tmpwatch.include

# cleaning (systemd-tmpfiles-clean.timer?)
cat << EOF >> /etc/tmpfiles.d/devshm.conf
#/usr/sbin/tmpwatch 24 /dev/shm
d /dev/shm 1777 root root 24h
EOF

Кладём файл с настройками rpm и yum для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.rpm.include

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#rpm -iv ftp://ftp/pub/EPEL7/x86_64/e/epel-release-7-5.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

cat << EOF >> /etc/yum.conf
deltarpm=0
EOF

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.orig

cat << EOF > /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/CentOS7.4/base/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/CentOS7.4/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/CentOS7.4/extras/$basearch/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/CentOS7.4/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF

mv /etc/yum.repos.d/CentOS-fasttrack.repo /etc/yum.repos.d/CentOS-fasttrack.repo.orig

cat << EOF > /etc/yum.repos.d/CentOS-fasttrack.repo
[fasttrack]
name=CentOS-$releasever - fasttrack
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/CentOS7.4/fasttrack/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF

mv /etc/yum.repos.d/CentOS-CR.repo /etc/yum.repos.d/CentOS-CR.repo.orig
cat << EOF > /etc/yum.repos.d/CentOS-CR.repo
[cr]
name=CentOS-$releasever - cr
#baseurl=http://mirror.centos.org/centos/$releasever/cr/$basearch/
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/CentOS7.4/cr/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
EOF

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.orig
cat << EOF > /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
baseurl=ftp://ftp.cs.niisi.ras.ru/pub/EPEL7/$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/7/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
EOF

#mv /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.orig
cat << EOF > /etc/yum.repos.d/elrepo.repo
[elrepo]
name=ELRepo.org Community Enterprise Linux Repository - el7
#baseurl=http://elrepo.org/linux/elrepo/el7/$basearch/
#mirrorlist=http://elrepo.org/mirrors-elrepo.el7
baseurl=ftp://ftp/pub/elrepo7/elrepo/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

[elrepo-testing]
name=ELRepo.org Community Enterprise Linux Testing Repository - el7
baseurl=http://elrepo.org/linux/testing/el7/$basearch/
mirrorlist=http://elrepo.org/mirrors-elrepo-testing.el7
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

[elrepo-kernel]
name=ELRepo.org Community Enterprise Linux Kernel Repository - el7
#baseurl=http://elrepo.org/linux/kernel/el7/$basearch/
#mirrorlist=http://elrepo.org/mirrors-elrepo-kernel.el7
baseurl=ftp://ftp/pub/elrepo6/kernel/$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0

[elrepo-extras]
name=ELRepo.org Community Enterprise Linux Repository - el7
#baseurl=http://elrepo.org/linux/extras/el7/$basearch/
#mirrorlist=http://elrepo.org/mirrors-elrepo-extras.el7
baseurl=ftp://ftp/pub/elrepo/extras/$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0
EOF

Кладём файл с настройками почты для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.mail.include

# sendmail
sed -i 's/DS/DSsmtp\.cs\.niisi\.ras\.ru/' /etc/mail/sendmail.cf
# почтовый адрес root
echo "root: почтовый-адрес-администратора" >> /etc/aliases

Кладём файл с настройками ssh для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.ssh.include

cat << EOF >> /etc/sysconfig/sshd
AUTOCREATE_SERVER_KEYS=YES
OPTIONS="-u0 -4"
EOF

mv /etc/ssh/sshd_config /etc/ssh/sshd_config.orig

cat << EOF > /etc/ssh/sshd_config
Port 22
ListenAddress $MYIP
ListenAddress 127.0.0.1
# SSH стартует до определения адреса по DHCP
#ListenAddress 0.0.0.0
AcceptEnv LANG TERM COLORTERM LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
AllowUsers ...
#AllowGroups ...
AllowTcpForwarding yes
ChallengeResponseAuthentication no
ClientAliveInterval 20
#Compression delayed
Compression no
GatewayPorts no
HostbasedAuthentication no
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
IgnoreRhosts yes
IgnoreUserKnownHosts yes
TCPKeepAlive yes
LogLevel INFO
MaxSessions 100
MaxStartups 100
#PasswordAuthentication no
PasswordAuthentication yes
PermitEmptyPasswords no
#PermitRootLogin yes
PermitRootLogin forced-commands-only
PermitUserEnvironment no
PrintMotd no
Protocol 2
PubkeyAuthentication yes
SkeyAuthentication no
#StrictModes yes
StrictModes no
Subsystem       sftp    /usr/libexec/openssh/sftp-server
SyslogFacility AUTHPRIV
UseDNS yes
UsePAM yes
UsePrivilegeSeparation sandbox
X11Forwarding yes
X11UseLocalhost yes
EOF

mkdir /home/имя/.ssh
chown имя:группа /home/имя/.ssh
chmod 700 /home/имя/.ssh

cat << EOF >> /home/имя/.ssh/authorized_keys
...
EOF
chown имя:группа /home/имя/.ssh/authorized_keys
chmod 600 /home/имя/.ssh/authorized_keys

Кладём файл с настройками syslog для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.syslog.include

cat << EOF >> /etc/rsyslog.conf
*.*                                                     @syslog.cs.niisi.ras.ru
EOF

Кладём файл с настройками клиента bacula для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.bacula-fd.include

sed -i 's/.*Name = bacula-dir/  Name = backup-orvs-dir/' /etc/bacula/bacula-fd.conf
sed -i 's/.*Password = "@@FD_PASSWORD@@"/  Password = "пароль директора"/' /etc/bacula/bacula-fd.conf
sed -i 's/.*Name = bacula-mon/  Name = console-mon/' /etc/bacula/bacula-fd.conf
sed -i 's/.*Password = "@@MON_FD_PASSWORD@@"/  Password = "пароль монитора"/' /etc/bacula/bacula-fd.conf
sed -i 's/.*director = bacula-dir = .*/  director = backup-orvs-dir = all, !skipped, !restored/' /etc/bacula/bacula-fd.conf

Кладём файл с настройками клиента zabbix для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.zabbix_agentd.include

mkdir /etc/zabbix/externalscripts

wget -O /etc/zabbix/externalscripts/check_ior.sh ftp://ftp.cs.niisi.ras.ru/pub/local/check_ior.sh
chmod 755 /etc/zabbix/externalscripts/check_ior.sh
wget -O /etc/zabbix/externalscripts/check_iow.sh ftp://ftp.cs.niisi.ras.ru/pub/local/check_iow.sh
chmod 755 /etc/zabbix/externalscripts/check_iow.sh
wget -O /etc/zabbix/externalscripts/check_br.sh ftp://ftp.cs.niisi.ras.ru/pub/local/check_br.sh
chmod 755 /etc/zabbix/externalscripts/check_br.sh
wget -O /etc/zabbix/externalscripts/check_bw.sh ftp://ftp.cs.niisi.ras.ru/pub/local/check_bw.sh
chmod 755 /etc/zabbix/externalscripts/check_bw.sh
wget -O /etc/zabbix/externalscripts/check_md_stat.sh ftp://ftp.cs.niisi.ras.ru/pub/local/check_md_stat.sh
chmod 755 /etc/zabbix/externalscripts/check_md_stat.sh
wget -O /etc/zabbix/externalscripts/net_speed.sh ftp://ftp.cs.niisi.ras.ru/pub/local/net_speed.sh
chmod 755 /etc/zabbix/externalscripts/net_speed.sh
wget -O /etc/zabbix/externalscripts/check_lmgrd_date.pl ftp://ftp.cs.niisi.ras.ru/pub/local/check_lmgrd_date.pl
chmod 755 /etc/zabbix/externalscripts/check_lmgrd_date.pl
wget -O /etc/zabbix/externalscripts/check_lmgrd_running.pl ftp://ftp.cs.niisi.ras.ru/pub/local/check_lmgrd_running.pl
chmod 755 /etc/zabbix/externalscripts/check_lmgrd_running.pl

echo "Defaults:zabbix !authenticate,!requiretty" > /etc/sudoers.d/zabbix
echo "zabbix    ALL=/sbin/mdadm --query --detail /dev/md0, /sbin/mdadm --query --detail /dev/md1, /sbin/mdadm --query --detail /dev/md2, /sbin/mdadm --query --detail /dev/md3" >> /etc/sudoers.d/zabbix

sed -i 's/Server=127\.0\.0\.1/Server=192.168.172.196/' /etc/zabbix_agentd.conf
sed -i 's/ServerActive=127\.0\.0\.1/ServerActive=192.168.172.196/' /etc/zabbix_agentd.conf
# это имя узла zabbix, а не DNS
sed -i "s/Hostname=Zabbix server/Hostname=$MYHOSTNAME/" /etc/zabbix_agentd.conf
sed -i "s/# SourceIP=/SourceIP=$MYIP/" /etc/zabbix_agentd.conf
sed -i "s/# ListenIP=0.0.0.0/ListenIP=$MYIP/" /etc/zabbix_agentd.conf
sed -i 's/# Timeout=3/Timeout=10/' /etc/zabbix_agentd.conf

echo "UserParameter=check.br[*],/etc/zabbix/externalscripts/check_br.sh '\$1'" >> /etc/zabbix_agentd.conf
echo "UserParameter=check.bw[*],/etc/zabbix/externalscripts/check_bw.sh '\$1'" >> /etc/zabbix_agentd.conf
echo "UserParameter=check.ior[*],/etc/zabbix/externalscripts/check_ior.sh '\$1'" >> /etc/zabbix_agentd.conf
echo "UserParameter=check.iow[*],/etc/zabbix/externalscripts/check_iow.sh '\$1'" >> /etc/zabbix_agentd.conf
echo "UserParameter=check.lmgrd.date[*],/etc/zabbix/externalscripts/check_lmgrd_date.pl '\$1'"  >> /etc/zabbix_agentd.conf
echo "UserParameter=check.lmgrd.running[*],/etc/zabbix/externalscripts/check_lmgrd_running.pl '\$1'" >> /etc/zabbix_agentd.conf
echo "UserParameter=check.md.stat[*],/etc/zabbix/externalscripts/check_md_stat.sh '\$1'" >> /etc/zabbix_agentd.conf
echo "UserParameter=net_speed[*],/etc/zabbix/externalscripts/net_speed.sh '\$1'" >> /etc/zabbix_agentd.conf

Кладём файл с настройками клиента SGE для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.SGE.include

wget -O /root/fedora-usermgmt-0.10-1200.el6.noarch.rpm  ftp://ftp/pub/local/fedora-usermgmt-0.10-1200.el6.noarch.rpm
wget -O /root/fedora-usermgmt-core-0.10-1200.el6.noarch.rpm  ftp://ftp/pub/local/fedora-usermgmt-core-0.10-1200.el6.noarch.rpm
wget -O /root/fedora-usermgmt-default-fedora-setup-0.10-1200.el6.noarch.rpm  ftp://ftp/pub/local/fedora-usermgmt-default-fedora-setup-0.10-1200.el6.noarch.rpm
wget -O /root/fedora-usermgmt-devel-0.10-1200.el6.noarch.rpm  ftp://ftp/pub/local/fedora-usermgmt-devel-0.10-1200.el6.noarch.rpm
wget -O /root/fedora-usermgmt-shadow-utils-0.10-1200.el6.noarch.rpm  ftp://ftp/pub/local/fedora-usermgmt-shadow-utils-0.10-1200.el6.noarch.rpm
yum localinstall  /root/fedora-usermgmt-core-0.10-1200.el6.noarch.rpm /root/fedora-usermgmt-0.10-1200.el6.noarch.rpm /root/fedora-usermgmt-default-fedora-setup-0.10-1200.el6.noarch.rpm /root/fedora-usermgmt-devel-0.10-1200.el6.noarch.rpm /root/fedora-usermgmt-shadow-utils-0.10-1200.el6.noarch.rpm -y

wget -O /root/compat-db43-4.3.29-15.el6.x86_64.rpm  ftp://ftp/pub/CentOS6.8/base/x86_64/Packages/compat-db43-4.3.29-15.el6.x86_64.rpm
wget -O /root/gridengine-6.1u3-6.el5.x86_64.rpm  ftp://ftp/pub/local/gridengine-6.1u3-6.el5.x86_64.rpm
wget -O /root/gridengine-execd-6.1u3-6.el5.x86_64.rpm  ftp://ftp/pub/local/gridengine-execd-6.1u3-6.el5.x86_64.rpm

yum localinstall /root/compat-db43-4.3.29-15.el6.x86_64.rpm -y
yum localinstall /root/gridengine-6.1u3-6.el5.x86_64.rpm -y
yum localinstall /root/gridengine-execd-6.1u3-6.el5.x86_64.rpm -y

yum versionlock add 'gridengine*'

sed -i 's/sgeadmin:x:.*:/sgeadmin:x:302:/' /etc/group
sed -i 's/sgeadmin.*/sgeadmin\:x\:302\:302\:Grid Engine\:\/usr\/share\/gridengine:\/bin\/bash/' /etc/passwd
chown -R 302:302 /usr/share/gridengine
chown -R 302:302 /var/spool/gridengine

sed -i 's/.*CreateSGEStartUpScripts $euid true master/#  CreateSGEStartUpScripts $euid true master/g' /usr/share/gridengine/inst_sge
sed -i 's/.*CreateSGEStartUpScripts $euid true execd/#  CreateSGEStartUpScripts $euid true execd/g' /usr/share/gridengine/inst_sge
sed -i 's/   CreateSGEStartUpScripts 0 true master/#   CreateSGEStartUpScripts 0 true master/' /usr/share/gridengine/inst_sge
sed -i 's/   CreateSGEStartUpScripts 0 true execd/#   CreateSGEStartUpScripts 0 true execd/' /usr/share/gridengine/inst_sge

chmod +x /etc/profile.d/sge.*
export SGE_ROOT=/usr/share/gridengine
cd $SGE_ROOT
sed -i 's/^          sge_schedd sge_shadowd \\/          sge_shadowd \\/' /usr/share/gridengine/util/install_modules/inst_common.sh

sed -i 's/sge_shepherd qacct qalter/sge_shepherd/' /usr/share/gridengine/util/install_modules/inst_common.sh
sed -i '/^ *sge_qmaster  \\/d' /usr/share/gridengine/util/install_modules/inst_common.sh

rm -rf default
ln -s /share4s/sge/default/ default
sed -i "s/export SGE_ROOT SGE_CELL/export SGE_ROOT SGE_CELL\nexport FE_TMPDIR=\/globaltemp\/temp/" /etc/init.d/sge_execd

# only in RHEL7
sed -i "s/2\.\[46\]\.\*)/2\.\[46\]\.\*|[3-9].\*)/" /usr/share/gridengine/util/arch
sed -i "s/2\.6\.\*)/2\.6\.\*|[3-9].\*)/" /usr/share/gridengine/util/arch

Кладём файл с настройками abrtd для kickstart

sed -i 's/MakeCompatCore = yes/MakeCompatCore = no/' /etc/abrt/plugins/CCpp.conf
sed -i 's/CreateCoreBacktrace = no/CreateCoreBacktrace = yes/' /etc/abrt/plugins/CCpp.conf
sed -i 's/SaveFullCore = yes/SaveFullCore = no/' /etc/abrt/plugins/CCpp.conf

sed -i 's/OnlyFatalMCE = no/OnlyFatalMCE = yes/' /etc/abrt/plugins/oops.conf

Кладём файл с настройками совместимости со старыми версиями для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.compatibility.include

ln -s /usr/lib/libXft.so.2 /usr/lib/libXft.so.1
ln -s /usr/bin/firefox /usr/bin/netscape
wget -O /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so ftp://ftp/pub/CentOS4.9/libstdc++-2-libc6.1-1-2.9.0.so
chmod a+x /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
ln -s /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so /usr/lib/libstdc++-libc6.1-1.so.2

Кладём файл с настройками Environment Modules для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.environment-modules.include

cat << EOF >> /usr/share/Modules/init/.modulespath
...
EOF

cat << EOF >> /etc/profile.d/modules.sh
#export TMPDIR=/globaltemp/temp
export FE_TMPDIR=/globaltemp/temp
export MGC_TMPDIR=/globaltemp/temp
EOF

cat << EOF >> /etc/profile.d/modules.csh
#setenv TMPDIR /globaltemp/temp
setenv FE_TMPDIR /globaltemp/temp
setenv MGC_TMPDIR /globaltemp/temp
EOF

Кладём файл с для создания ссылок на домашние каталоги, САПРЫ, системы разработки и прочие местные особенности для kickstart на сервер FTP по адресу ftp://ftp/pub/kickstarts/CentOS74.node.links.include

...
mkdir /root/bin
wget -O /root/bin/makehomedir ftp://ftp/pub/local/makehomedir
chmod u+x /root/bin/makehomedir

(crontab -l; echo '3 12-20/2  * * 1-5 /root/bin/makehomedir') | crontab -

Создать каталог uefi для TFTP сервера (на том же сервере, что и DHCP), в который положить:

Отредактировать файл конфигурации GRUB2 uefi/grub.cfg (параметризация по ${net_efinet2_hostname} или ${net_efinet1_hostname} при выключенной загрузке PXE IPv6 - серверов будет много, вариант bond - объединение ethernet портов):

set timeout=60

menuentry 'CentOS 7.4' {
  linuxefi uefi/CentOS74.vmlinuz ramdisk_size=16000 selinux=0 ip=:::::eno1:dhcp:9000 lang=en_US.UTF-8 rd.locale.LANG=en_US.UTF-8 rd.vconsole.keymap=us rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.unicode inst.geoloc=0 inst.lang=en_US.UTF-8 inst.keymap=us inst.sshd ks=ftp://ftp/pub/kickstarts/${net_efinet1_hostname}.CentOS74.cfg kernel.ixgbe.allow_unsupported_sfp=1 inst.syslog=192.168.172.181:514 inst.loglevel=info inst.kdump_addon=off inst.selinux=0 inst.gpt
  initrdefi uefi/CentOS74.initrd.img
}

menuentry 'CentOS 7.4 bond' {
  linuxefi uefi/CentOS74.vmlinuz ramdisk_size=16000 selinux=0 bond=bond0:eno1,eno2:mode=0 ip=:::::bond0:dhcp:9000 lang=en_US.UTF-8 rd.locale.LANG=en_US.UTF-8 rd.vconsole.keymap=us rd.vconsole.font=latarcyrheb-sun16 rd .vconsole.unicode inst.geoloc=0 inst.lang=en_US.UTF-8 inst.keymap=us inst.sshd ks=ftp://ftp/pub/kickstarts/${net_efinet1_hostname}.CentOS74.cfg kernel.ixgbe.allow_unsupported_sfp=1 inst.syslog=192.168.172.181:514 inst.loglevel=info inst.kdump_addon=off inst.selinux=0 inst.gpt
  initrdefi uefi/CentOS74.initrd.img

menuentry rescue {
  linuxefi uefi/vmlinuz inst.repo=ftp://ftp/pub/CentOS7.4/base/x86_64 ip=:::::eno1:dhcp:9000 inst.syslog=syslog.cs.niisi.ras.ru lang=en_US.UTF-8 rd.locale.LANG=en_US.UTF-8 rd.vconsole.keymap=us rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.unicode inst.rescue kernel.ixgbe.allow_unsupported_sfp=1
  initrdefi uefi/initrd.img
}

menuentry 'rescue bond' {
  linuxefi uefi/vmlinuz inst.repo=ftp://ftp/pub/CentOS7.4/base/x86_64 bond=bond0:eno1,eno2:mode=0 ip=:::::bond0:dhcp:9000 inst.syslog=syslog.cs.niisi.ras.ru lang=en_US.UTF-8 rd.locale.LANG=en_US.UTF-8 rd.vconsole.keymap=us rd.vconsole.font=latarcyrheb-sun16 rd.vconsole.unicode inst.rescue kernel.ixgbe.allow_unsupported_sfp=1
  initrdefi uefi/initrd.img
}

menuentry memtest {
  chainloader uefi/BOOTX64.MEMTEST86-74.EFI
}

Настроить DHCP сервер для загрузки установщика PXE:

...
allow booting;
...
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
# к сожалению, нельзя определить последовательность записей, 
# придётся инкапсулировать вручную
#option PXE.boot-server-list code 8 = seq {unsigned integer 16, unsigned integer 8, array of ip-address};
option PXE.boot-server-list code 8 = string;
# к сожалению, нельзя определить последовательность записей,
# придётся инкапсулировать вручную
#option PXE.menu code 9 = seq {unsigned integer 16, unsigned integer 8, text};
option PXE.menu code 9 = string;
option PXE.prompt code 10 = {unsigned integer 8, text};
option PXE.boot-server-type code 71 = {unsigned integer 16, unsigned integer 16};

option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;

option architecture-type code 93 = unsigned integer 16;

shared-network имя {
  authoritative;
# MS Windows BINLSVC не умеет возвращать тип сервера загрузки, 
#    поэтому клиент PXE не воспринимает его как свой
# RIS сервер с включённой защитой не отдаёт TFTP файл, если не отработал BINLSVC
# такие случаи необходимо обслуживать "по-простому"
#  if hardware = 01:xx:xx:xx:xx:xx:xx {
#     next-server адрес-RIS-сервера;
#     filename "RemoteInstall\\OSChooser\\I386\\startrom.com";
#  } elsif ...
# делаем из ISC DHCP сервера два разных BOOT сервера
   if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
      vendor-option-space PXE;
      option vendor-class-identifier "PXEClient:Arch:00000:UNDI:002001";
# предлагаем оператору выбрать BOOT сервер и ждём 10 секунд
      option PXE.prompt 10 "Select Boot Server";
# для сервера типа 0000 приглашение "Local"
# для сервера типа 804c (0x8000+'L') приглашение "LIS (Linux Install Server)"
# для сервера типа 8057 (0x8000+'W') приглашение "RIS (MS Windows Install)"
      option PXE.menu 00:00:05:4c:6f:63:61:6c:80:4c:1a:4c:49:53:20:28:4c:69:6e:75:78:20:49:6e:73:74:61:6c:6c:20:53:65:72:76:65:72:29:80:57:18:52:49:53:20:28:4d:53:20:57:69:6e:64:6f:77:73:20:49:6e:73:74:61:6c:6c:29;
# запретить multicast
      option PXE.discovery-control 2;
# для сервера типа 804c (0x8000+'L') один BOOT сервер x.y.z.v (адрес нашего DHCP сервера)
# для сервера типа 8057 (0x8000+'W') один BOOT сервер x.y.z.v (адрес нашего DHCP сервера)
      option PXE.boot-server-list 80:4c:01:xx:yy:zz:vv:80:57:01:xx:yy:zz:vv;
# ветвление в зависимости от выбора типа BOOT сервера, сделанного оператором
      if substring (option vendor-encapsulated-options, 3, 1) = "W" {
        next-server адрес-RIS-сервера;
        filename "RemoteInstall\\OSChooser\\I386\\startrom.com";
        option PXE.boot-server-type 32855 0;
      } else {
        next-server адрес-TFTP-сервера-с-pxelinux;
        if option architecture-type = 00:07 {
# rfc4578#section-2.1: 0 - Intel x86PC, 7 - UEFI ByteCode, 9 - UEFI x86-64
          filename = "uefi/shim.efi";
        } else {
# из system-config-netboot-cmd в CentOS 5 или syslinux-tftpboot в CentOS 6/7
          filename "linux-install/pxelinux.0";
        }
        option PXE.boot-server-type 32844 0;
      }
  }
...
# VLAN 3 grid, используется DHCP proxy
  subnet подсеть netmask 255.255.248.0 {
    server-identifier адрес-DHCP;
    option domain-name-servers адрес-DNS-сервера1, адрес-DNS-сервера2;
    option netbios-name-servers адрес-WINS-сервера;
    option netbios-node-type 8;
    option ntp-servers адрес-NTP-сервера1, адрес-NTP-сервера2;
    option routers адрес-шлюза-для-VLAN3; # тут же DHCP proxy
    option smtp-server адрес-SMTP-сервера;
    option pop-server адрес-POP/IMAP-сервера;
    host полное-доменное-имя {
      fixed-address IP-адрес;
      hardware ethernet MAC-адрес;
    }
...
  }
}

UEFI клиент PXE при DHCP запросе взводит бит требования широковещательного ответа и этот широковещательный ответ не всегда доходит до него (VLAN со внутренней маршрутизацией, DHCP клиент CentOS 7.4 работает без проблем). Пришлось на время установки отключать DHCP Relay и ставить локальный DHCP сервер. Или ставить систему во VLAN1 и потом переключать.

Перевести загрузку сервера в режим UEFI при необходимости (самое время настроить остальные параметры, в т.ч. IPMI), перезагрузиться.

Отредактировать список источников загрузки: загрузка по PXE с первого сетевого интерфейса, при неудаче UEFI Shell, всё лишнее удалить.

Загрузиться по сети, установка должна пройти автоматически.

Ручная настройка (точнее проверка, что ничего не забыли и не напутали в файлах kickstart):

@ Карта сайта News Автора!

Bog BOS: Установка Linux CentOS 7.4 для вычислительного узла (UEFI, PXE, kickstart)

Последние изменения:
2024.03.28: sysadmin: Файловая система zfs под Linux для архива (обновление от 0.6 до 2.2)



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru