RHEL CentOS 7中的Kickstart安装后脚本示例8

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

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