RHEL CentOS 7中的Kickstart安装后脚本示例8
我们使用Kickstart在Red Hat/CentOS和Fedora(或者任何其他使用Red Hat环境的OS)上执行自动安装。
我们可以选择"添加命令以在安装完成后在系统上运行"。
因此,在本文中,我们将了解RHEL/CentOS 7/8中Kickstart的安装后脚本示例
什么是Kickstart安装后脚本?
"%post"脚本是安装后的脚本,在安装完成后但在首次重新引导系统之前运行。
我们可以在Kickstart中添加多个%post安装脚本
所有的Kickstart安装后脚本都必须以
%post
开头并以%end行结尾默认情况下,所有Kickstart安装后脚本均在chroot环境中执行
我们可以在Kickstart%post部分执行systemctl命令吗?
由于默认情况下,%post部分使用chroot环境,因此大多数systemctl命令将拒绝执行任何操作。
原因是systemd进程和使用chroot命令的用户对文件系统的看法不同
例外的是单位文件命令,例如" systemctl enable"和" systemctl disable"命令。
这些命令不需要正在运行的系统,不会影响正在运行的进程,但是会影响单元文件。
尽管我们可以使用
--nochroot
在%post安装脚本中执行
systemctl`命令。但是除了使用
systemctl
之外,我们还可以使用kickstart命令-services
为什么我们使用Kickstart安装后脚本?
其中我们可以选择添加命令,以在安装完成后(但在首次重新引导系统之前)在系统上运行。
"%post"部分对于诸如安装其他软件或者配置其他名称服务器之类的功能很有用。
我们还可以在%post部分执行自定义脚本以执行安装后任务,例如检查系统运行状况性能等。
我们可以根据计划在%post部分中运行的脚本添加自己的解释器,例如bash,perl,python等。
Kickstart安装后脚本示例
让我们来看一些kickstart后期安装脚本示例,我们可以在单个kickstart文件中包含多个post区域。
示例1:保存kickstart%post日志
在此kickstart安装脚本示例中,我将运行一些基本命令并将这些命令的日志存储在单独的日志文件中
%post --log=/var/log/kickstart_post.log echo "Currently mounted partitions" df -Th echo "==============================" echo "Available memory" free -m echo "==============================" echo "Kickstart post install script completed at: `date`" echo "==============================" %end
kickstart安装完成后,请在客户端节点上验证/var/log/kickstart_post.log
。
# cat /var/log/kickstart_post.log Currently mounted partitions Filesystem Type Size Used Avail Use% Mounted on /dev/sda3 ext4 17G 2.1G 14G 14% / /dev/sda1 ext4 976M 121M 789M 14% /boot devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs tmpfs 2.0G 25M 2.0G 2% /run ============================== Available memory total used free shared buff/cache available Mem: 3940 487 449 104 3003 3058 Swap: 2047 8 2039 ============================== Kickstart post install script completed at: Sun Apr 26 16:32:55 IST 2017 ==============================
示例2:使用nochroot执行kickstart安装后脚本
--nochroot
允许我们指定要在chroot环境之外运行的命令。
如果我们希望从RHEL ISO或者在kickstart的%pre阶段创建的日志文件中复制日志,则必须使用-nochroot来访问这些日志。
在这个启动后安装脚本示例中,我们将复制在%pre阶段创建的日志文件,还将使用--nochroot检查现有系统环境。
%post --nochroot --log=/mnt/sysimage/var/log/kickstart_post_nochroot.log echo "Copying %pre stage log files" /usr/bin/cp -rv /tmp/kickstart_pre.log /mnt/sysimage/var/log/ echo "==============================" echo "Currently mounted partitions" df -Th %end
kickstart安装完成后,请在客户端节点上验证/var/log/kickstart_post_nochroot.log
。
# cat /var/log/kickstart_post_nochroot.log Copying %pre stage log files '/tmp/kickstart_pre.log' -> '/mnt/sysimage/var/log/kickstart_pre.log' ============================== Currently mounted partitions Filesystem Type Size Used Avail Use% Mounted on devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 2.0G 4.0K 2.0G 1% /dev/shm tmpfs tmpfs 2.0G 25M 2.0G 2% /run tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup 10.10.10.12:/images/nfs 22G 15G 6.0G 71% /run/install/repo /dev/mapper/live-rw ext4 2.9G 2.0G 936M 69% / tmpfs tmpfs 2.0G 19M 2.0G 1% /tmp /dev/sda3 ext4 17G 2.1G 14G 14% /mnt/sysimage /dev/sda1 ext4 976M 121M 789M 14% /mnt/sysimage/boot tmpfs tmpfs 2.0G 0 2.0G 0% /mnt/sysimage/dev/shm
示例3:将--interpreter与%post脚本一起使用
我们可以在%post阶段执行自己的自定义脚本。
可以使用系统上可用的任何脚本语言。
在大多数情况下,它们是/usr/bin/sh
,/usr/bin/bash
和/usr/libexec/platform-python
提示:
我们也可以在%post阶段使用/usr/bin/python执行python脚本。
在此Kickstart安装后脚本示例中,我正在执行python和bash脚本并将日志存储在单独的日志文件中
%post --interpreter=/usr/libexec/platform-python --log=/var/log/kickstart_python_post.log print("This is a sample python script called at %post stage") %end %post --interpreter=/usr/bin/bash --log=/var/log/kickstart_bash_post.log echo "This is a sample bash script called at %post stage" %end
kickstart安装完成后,请验证客户端节点上的/var/log/kickstart_bash_post.log和/var/log/kickstart_python_post.log文件。
# cat /var/log/kickstart_bash_post.log This is a sample bash script called at %post stage # cat kickstart_python_post.log This is a sample python script called at %post stage