Кривой стартер. post-install

This entry is part 4 of 4 in the series kickstart

Эта секция позволяет заскриптовать практически любые действия, которые будут проведены по окончании инсталяции. В моём случае все скрипты идут отдельным инклудом post.cfg, кторый начинается со строчки %post --interpreter /bin/sh --nochroot --log /tmp/postinstall.log.
Большая часть моего post.cfg не представляет интереса, т.к. выполняет узкоспециализированные задачи, но часть может быть полезна.
Т.к. в kickstart’е я не нашёл способа, не возвращаясь в интерактивный режим, задать пароль для шифрованного раздела, то эту операцию я выполняю уже в post секции:
# Setup crypted partition.
umount /dev/sdb4
dmsetup remove mcrypt
cryptsetup -q luksFormat /dev/sdb4 --key-file /mnt/sysimage/etc/mss.key
cryptsetup luksOpen /dev/sdb4 mcrypt --key-file /mnt/sysimage/etc/mss.key
mkfs.ext4 -O dir_index /dev/mapper/mcrypt
# Installer adds a line to mount sdb4 as uncrypted partition to fstab. Remove it!
sed -i '/mss/d' /mnt/sysimage/etc/fstab
# And add correct data to fstab and crypttab.
echo "/dev/mapper/mcrypt /var/lib/mss ext4 defaults 1 3" >> /mnt/sysimage/etc/fstab
echo "mcrypt /dev/sda4 /etc/mss.key" > /mnt/sysimage/etc/crypttab

Ключ mss.key генерируется в %pre секции.

Затем я копирую различные конфиги. Общий принцип:
cp /mnt/isodir/configs/* /mnt/sysimage//

Как вариант – донастройка munin-node:
# Unhook unused munin plugins.
for i in df_inode diskstats entropy forks fw_packets if_err_eth0 \
if_eth0 interrupts threads irqstats netstat open_files users swap \
open_inodes selinux_avcstat sendmail* proc_pri vmstat processes
do
rm -r /mnt/sysimage/etc/munin/plugins/$i
done

# Enable usable munin plugins.
ln -s /usr/share/munin/plugins/sensors_ /mnt/sysimage/etc/munin/plugins/sensors_temp
ln -s /usr/share/munin/plugins/sensors_ /mnt/sysimage/etc/munin/plugins/sensors_fan
ln -s /usr/share/munin/plugins/proc /mnt/sysimage/etc/munin/plugins/proc

# Accept connections from our munin-server.
echo "cidr_allow ???.???.??.??/32" >> /mnt/sysimage/etc/munin/munin-node.conf

# Install munin-node configuretion.
cp /mnt/isodir/configs/munin-node-mss /mnt/sysimage/etc/munin/plugin-conf.d/

При помощи sed разрешаю пользователям из группы wheel повышать привилегии без ввода пароля:
# Let wheel users sudo without typing password every time.
sed -Ei 's/^#( %wheel.*NOPASSWD.*)/\1/' /mnt/sysimage/etc/sudoers

Т.к. процесс настройки сети был пропущен, то некоторые манипуляции с именем машины производим тут же:
# Setup hostname.
sed -i '/^HOSTNAME/d' /mnt/sysimage/etc/sysconfig/network
echo "HOSTNAME=`cat /tmp/hostname.txt`" >> /mnt/sysimage/etc/sysconfig/network

# Add hostname to /etc/hosts to prevent resolve timeouts.
#awk ‘{$(NF+1)=”`cat /tmp/hostname.txt`”;}1’ /mnt/sysimage/etc/hosts > /tmp/hosts.tmp && mv /tmp/hosts.tmp /mnt/sysimage/etc/hosts
awk ‘{getline HOST /tmp/hosts.tmp && mv /tmp/hosts.tmp /mnt/sysimage/etc/hosts

Т.к. наши сервера потом попадают в чужие руки, я удаляю улики, т.е. логи:
# Remove clues.
#rm /mnt/sysimage/root/anaconda-ks.cfg
rm /mnt/sysimage/tmp/ks-script-*

Обычная часть закончена. Теперь предстоит выполнить некоторые операции в свежеустановленной системе, для чего надо сделать chroot в /:
# Chrooted postinstall scripts to make local changes in fresh system.
%post --interpreter /bin/sh

Например можно добавить в загрузку службу, которая была установлена не из пакетов:
# Add mss player init.d script to runlevels.
/sbin/chkconfig --add mss

Или создать пользователя с заданным паролем:
adduser mss -m -U -u 1000 -G wheel -p sa************

Завершает процесс %end.

Share