RHEL CentOS 7中的Kickstart%pre脚本示例

时间:2020-01-09 10:41:08  来源:igfitidea点击:

我们使用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
==============================