RHEL CentOS 7中的Kickstart%pre脚本示例
我们使用Kickstart在Red Hat/CentOS和Fedora(或者任何其他使用Red Hat环境的OS)上执行自动安装。
我们可以选择使用%pre
添加命令"在实际安装开始之前在系统上运行"。
因此,在本文中,我们将学习RHEL/CentOS 7/8中Kickstart的%pre
脚本示例。
什么是Kickstart%pre脚本?
加载Kickstart文件之后,但在完全解析并开始安装之前,将在系统上立即运行
%pre
脚本所有的Kickstart
%pre
安装脚本都必须以%pre开头并以%end行结尾除了安装环境/sbin和/bin目录中的大多数实用程序之外,还可以在%pre脚本中使用与网络,存储和文件系统相关的命令。
%pre脚本无法在chroot环境中运行。
什么是Kickstart%pre-install脚本?
完成以下任务后,将运行%pre-install脚本中的命令:
系统分区
文件系统被创建并挂载在/mnt/sysimage下。
已根据任何引导选项和kickstart命令配置了网络
每个%pre-install部分必须以%pre-install开头并以%end结尾。
在安装软件包之前,可以使用%pre-install脚本来修改安装,并添加具有保证ID的用户和组。
%pre-install
脚本不能在chroot环境中运行。
Kickstart%pre脚本示例
以下是一些kickstart%pre
脚本示例
示例1:从kickstart%pre脚本存储日志
我们可以使用--log并定义日志文件的路径(如果找不到,将创建一个新文件)来存储%pre脚本执行的日志。
在这个kickstart%pre
脚本示例中,我将检查系统状态并将其存储在/tmp/kickstart_pre.log
中。
提示:
我们还可以在%pre部分中定义set -x以启用调试模式
%pre --log=/tmp/kickstart_pre.log echo "Currently mounted partitions" df -Th echo "==============================" echo "Available memory" free -m echo "==============================" echo "Kickstart pre install script completed at: `date`" echo "==============================" %end
默认情况下,安装完成后,我们在kickstart%pre
部分创建的任何日志文件将不可用。
因此,一旦安装完成,我们必须使用Post脚本复制这些日志文件。
假设我们已复制日志文件,请在kickstart安装完成后在客户端节点上验证kickstart_pre.log
。
# cat /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 17M 2.0G 1% /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 939M 69% / tmpfs tmpfs 2.0G 220K 2.0G 1% /tmp ============================== Available memory total used free shared buff/cache available Mem: 3940 437 2736 69 766 3206 Swap: 0 0 0 ============================== Kickstart pre install script completed at: Sun Apr 26 10:57:19 UTC 2017 ==============================
示例2:使用--interpreter在Kickstart%pre部分执行脚本
--interpreter =
允许我们指定其他脚本语言,例如Python。
可以使用系统上可用的任何脚本语言。
在大多数情况下,它们是/usr/bin/sh
,/usr/bin/bash
和/usr/libexec/platform-python
。
在此Kickstart%pre
脚本示例中,我编写了一些虚拟python和bash脚本并将输出存储在单独的日志文件中
%pre --interpreter=/usr/libexec/platform-python --log=/tmp/kickstart_python_pre.log print("This is a sample python script called at %pre stage") %end %pre --interpreter=/usr/bin/bash --log=/tmp/kickstart_bash_pre.log echo "This is a sample bash script called at %pre stage" %end
假设我们已复制日志文件,请在kickstart安装完成后在客户端节点上验证" kickstart_bash_pre.log"和" kickstart_python_pre.log"。
# cat /var/log/kickstart_python_pre.log This is a sample python script called at %pre stage # cat /var/log/kickstart_bash_pre.log This is a sample bash script called at %pre stage
示例3:创建预安装脚本
在这个kickstart%pre-install
脚本示例中,我们将获得我们的系统环境详细信息
%pre-install --log=/tmp/kickstart_pre_install.log echo "Currently mounted partitions" df -Th echo "==============================" echo "Available memory" free -m echo "==============================" echo "Kickstart pre install script completed at: `date`" echo "==============================" %end
假设我们已经复制了日志文件,请在kickstart安装完成后在客户端节点上验证kickstart_pre_install.log
。
我们可以检查%pre和%pre-install部分之间的分区布局差异。
# cat /var/log/kickstart_pre_install.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 21M 2.0G 2% /tmp /dev/sda3 ext4 17G 45M 16G 1% /mnt/sysimage /dev/sda1 ext4 976M 2.6M 907M 1% /mnt/sysimage/boot tmpfs tmpfs 2.0G 0 2.0G 0% /mnt/sysimage/dev/shm ============================== Available memory total used free shared buff/cache available Mem: 3940 487 2572 100 879 3121 Swap: 2047 0 2047 ============================== Kickstart pre install script completed at: Sun Apr 26 11:41:45 UTC 2017 ==============================