RHEL/CentOS 8 Kickstart示例| Kickstart生成器

时间:2020-02-23 14:40:21  来源:igfitidea点击:

在本文中,将介绍RHEL/CentOS 8 kickstart示例命令的列表,我们可以使用这些命令来自动化Red Hat和CentOS的安装。
我没有在本文中介绍"%pre"和"%post"的安装阶段,因为这可能会延长本已很长的文章。
尽管我将尝试介绍实时生产环境中最常用的kickstart命令。

Kickstart生成器

我们可以使用Red Hat的官方Kickstart生成器工具创建kickstart文件来自动执行安装。

只需按照屏幕上的选项进行操作,我们就会根据自己的选择获得一个示例kickstart文件。

Kickstart验证器

在使用kickstart文件启动安装之前,建议先验证Kickstart配置文件的内容。
安装pykickstart以安装ksvalidator工具

说明:

在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum软件包管理器可以安装提供的rpm及其依赖项。

# dnf -y install pykickstart

要验证kickstart文件,请使用ksvalidator提供绝对路径和kickstart文件:

# ksvalidator kickstart.conf

以下是Kickstart命令的列表,我们可以手动添加和创建自己的Kickstart文件来自动完成整个Red Hat/CentOS安装过程。
在文章末尾,我添加了一个示例kickstart配置文件,该文件已用于在Oracle VirtualBox中安装虚拟机。

添加注释(可选)

我们可以选择添加一些注释来标识Kickstart,就像我为标识添加的一样。
这是可选的,我们可以选择忽略:

# version=RHEL8
# RHEL/CentOS 8 Kickstart Example

执行媒体检查

我们可以在开始安装之前检查媒体

Kickstart命令-MediaCheck

此命令强制安装程序在开始安装之前执行媒体检查。
此命令要求安装,因此默认情况下处于禁用状态。

语法:

mediacheck

安装方式

对于全自动安装,我们必须在Kickstart文件中指定一种可用模式:

Kickstart命令-图形

  • 它以图形方式执行Kickstart安装。

  • 我们也可以将其与" --non-interactive"结合使用,后者以完全非交互的方式执行安装。

  • 需要用户交互时,此模式将终止安装。

Kickstart命令-文本

  • 它以文本模式执行Kickstart安装。

  • 我们也可以将其与" --non-interactive"结合使用,后者以完全非交互的方式执行安装。

  • 需要用户交互时,此模式将终止安装。

Kickstart命令-cmdline

  • 它以完全非交互式的命令行模式执行安装。

  • 任何交互提示都会停止安装。

  • 此命令没有选项。

在"我的RHEL/CentOS 8 kickstart示例"中,我选择"文本"作为首选安装方法。

# Install in text mode
text

创建其他Repo

我们可以配置可以用作软件包安装源的其他yum存储库。

Kickstart命令-Repo

  • 默认情况下,所有提供的存储库都是自动创建的,并挂载在/run/install/repo/<repo_name>

  • 我们可以添加多条repo行。

语法:

repo --name=repoid [--baseurl=url|--mirrorlist=url|--metalink=url] [OPTIONS]

其中

  • --baseurl =存储库的URL。

  • --mirrorlist =指向存储库镜像列表的URL。

  • --metalink =带有metalink的URL用于存储库。

有关支持的选项的完整列表,请参阅《 Red Hat高级安装指南》。

在我的RHEL/CentOS 8 kickstart示例中,我还将创建AppStream仓库,该仓库是ISO镜像的一部分。

# Create additional repo during installation
repo --name="AppStream" --baseurl=file:///run/install/repo/AppStream

安装方式

有不同的安装方法可供选择,例如cdrom,harddrive,hmc,nfs,liveimg或者url。

我们在生产环境中主要使用urlcdromnfs,因此我将解释以下安装方法:

Kickstart命令-NFS

它从指定的NFS服务器执行安装。

语法:

nfs OPTIONS

选项:

  • --server =要安装的服务器(主机名或者IP)。

  • --dir =包含安装树变体目录的目录。

  • --opts =用于挂载NFS导出的挂载选项。

Kickstart命令-网址

它使用FTP,HTTP或者HTTPS从远程服务器上的安装树镜像执行安装。

语法:

url --url=FROM [OPTIONS]

必填选项:

  • --url =要安装的位置。
    支持的协议为HTTP,HTTPS,FTP和文件。

可选选项:

  • --proxy =指定执行安装时要使用的HTTP,HTTPS或者FTP代理。

要获取支持的选项的完整列表,请参阅《 Red Hat指南》以进行高级安装。

Kickstart命令-CDROM

  • 它从系统上的第一个光盘驱动器执行安装。

  • 此命令没有选项。

在我的" RHEL/CentOS 8 kickstart示例"中,我将使用NFS作为安装方法

# Installation media
nfs --server=10.10.10.12 --dir=/images/

键盘布局

  • 它为系统设置一个或者多个可用的键盘布局。

  • 可以在xkeyboard-config(7)手册页的"布局"下查看所有可用的布局。

语法:

keyboard --vckeymap|--xlayouts OPTIONS

选项:

  • --vckeymap =指定应使用的VConsole键映射。
    有效名称对应于/usr/lib/kbd/keymaps/xkb /目录中的文件列表,不带.map扩展名。

  • --xlayouts =指定X布局的列表,该列表应用作逗号分隔的列表,不带空格。
    接受与setxkbmap(1)相同格式的值,可以是布局格式(例如cz),也可以是布局(变量)格式(例如cz(qwerty))。

在"我的RHEL/CentOS 8 kickstart示例"中,我将使用"英语US"作为键盘布局。

# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'

设定系统语言

Kickstart命令-lang

  • 它设置在安装过程中使用的语言以及在已安装系统上使用的默认语言。

  • 我们可以使用locale -a | grep _或者 localectl list-locales获取受支持的语言环境列表。

语法:

lang language [--addsupport=language,...]

在"我的RHEL/CentOS 8 kickstart示例"中,我将使用" en_US.UTF-8"

# System language
lang en_US.UTF-8

网络信息

Kickstart命令-网络

  • 它为目标系统配置网络信息,并在安装环境中激活网络设备。

  • 第一个网络命令中指定的设备将自动激活。

  • --activate选项也可以明确要求激活设备。

语法:

network OPTIONS

选项:

  • --activate在安装环境中激活该设备。

  • --no-activate不会在安装环境中激活该设备。

  • --nodefroute禁止设备使用默认路由。

  • --bootproto = dhcp,bootp,ibft或者静态之一。
    默认选项是dhcp。

  • --noipv4在此设备上禁用IPv4.

  • --noipv6在此设备上禁用IPv6.

在"我的RHEL/CentOS 8 kickstart示例"中,我将网络分配给2个接口" eth0"和" eth1"

提示:

我使用了传统的接口名称,仅当我们禁用一致的网络设备命名时才可以使用。

# Network information
network --bootproto=static --ip=10.10.10.15 --netmask=255.255.255.0 --gateway=10.10.10.1 --nameserver=8.8.8.8 --device=eth0 
network  --bootproto=dhcp --device=eth0  --activate
network  --bootproto=dhcp --device=eth1 --onboot=off  --activate
network  --hostname=centos8-4.example.com

分配root密码

  • 它将系统的root密码设置为password参数。

  • 我们可以提供纯文本或者加密的root密码

  • 要创建加密的密码,可以使用python:

$python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
  • 这会使用随机盐生成与sha512 crypt兼容的密码哈希。

语法:

rootpw [--iscrypted|--plaintext] [--lock] password

选项:

  • --iscrypted如果存在此选项,则假定password参数已被加密。

  • --plaintext如果存在此选项,则假定password参数为纯文本。

  • --lock如果存在此选项,则默认情况下,root帐户被锁定。
    这意味着root用户将无法从控制台登录。

在"我的RHEL/CentOS 8 kickstart示例"中,我已经创建并分配了root密码

# Root password
rootpw --iscrypted $w7El/FYx9mbTG6x9$Te.Yg6dq0TsQwGpdSjeDGSw4J9ZBAkLXzT9ODMV7I7lHvX3n5.9PCS4jIkS2GbVLZOpVRLvrua3wwbwA.cfWX.

首次启动时运行安装程序代理

Kickstart命令-firstboot

  • 它确定"初始设置"应用程序是否在系统首次启动时启动。

  • 如果启用,则必须安装初始安装程序包。

  • 如果未指定,则默认情况下禁用此选项。

语法:

firstboot OPTIONS

选项:

  • --enable或者--enabled:系统第一次启动时启动初始设置。

  • --disable或者--disabled:系统第一次启动时不启动初始设置。

  • --reconfig:使初始设置在重新配置模式下在引导时启动。

在"我的RHEL/CentOS 8 kickstart示例"中,我将启用" firstboot"

# Run the Setup Agent on first boot
firstboot --enable

配置X Window系统

我们可以选择安装和配置X Window System或者将其禁用

Kickstart命令-xconfig

  • 如果我们在软件包选择选项中安装了显示管理器,则此软件包将创建X配置,并且已安装的系统默认为graphical.target

  • 这会覆盖" skipx"选项的效果。

  • 要配置X Window系统,请使用xconfig [--startxonboot]

Kickstart命令-skipx

为了避免配置X Window系统,请使用skipx

在"我的RHEL/CentOS 8 kickstart示例"中,我将禁用X Windows系统

# Do not configure the X Window System
skipx

启用或者禁用系统服务

Kickstart命令-服务

  • 它修改了将在默认systemd目标下运行的默认服务集。

  • 禁用服务的列表在启用服务的列表之前进行处理。

  • 因此,如果一项服务出现在两个列表中,它将被启用。

语法:

services [--disabled=list] [--enabled=list]

在"我的RHEL/CentOS 8 kickstart示例"中,我将启用" chronyd"服务

# System services
services --enabled="chronyd"

设定时区

Kickstart命令-时区

  • 它设置系统时区。

  • 我们可以使用timedatectl list-timezones获取支持的时区值列表

语法:

timezone timezone [OPTIONS]

可选选项:

  • --utc如果存在,则系统假定硬件时钟已设置为UTC(格林威治标准时间)时间。

  • --nontp禁用NTP服务自动启动。

  • --ntpservers =指定要用作逗号分隔列表的NTP服务器列表,不带空格。

在"我的RHEL/CentOS 8启动示例"中,我将使用"亚洲/加尔各答"作为我的时区

# System timezone
timezone Asia/Kolkata --isUtc

处理节点的重启

Kickstart命令-重新启动

  • 重新启动将指示安装程序在成功完成安装后重新启动(无参数)。

  • 通常,Kickstart会显示一条消息,并在重新启动之前等待用户按下某个键。

  • 指定重新启动以自动安装

在"我的RHEL/CentOS 8 kickstart示例"中,我将使用重新启动,因为我计划自动执行整个安装

# Reboot the node
reboot

创建磁盘分区

我们可以使用不同的变量来配置磁盘布局

Kickstart命令-被忽略的风险

  • 这将导致安装程序忽略指定的磁盘。

  • 如果我们使用自动分区并且要确保忽略某些磁盘,这将很有用。

在"我的RHEL/CentOS 8 kickstart示例"中,我只想使用" sda"磁盘进行安装

# Choose the disks to be used
ignoredisk --only-use=sda

Kickstart命令-ClearPart

  • 在创建新分区之前,它将从系统中删除分区。

  • 默认情况下,不删除任何分区。

在"我的CentOS/RHEL 8 kickstart示例"中,我将删除所有现有分区:

# Partition clearing information
clearpart --all

Kickstart命令-部分或者分区

  • 它在系统上创建一个分区。

  • 这个主题非常广泛,我打算提供不同的分区布局示例来安装Linux

另请阅读:

不同存储类型的示例kickstart分区示例-RAID,LVM,多路径和简单

在我的示例kickstart示例中,我将使用Logical Volume Manager安装CentOS 8. 其中我将创建

  • 根逻辑卷

  • 交换分区

  • 引导分区

# Disk partitioning information
part pv.409 --fstype="lvmpv" --ondisk=sda --size=14847
part /boot --fstype="ext4" --ondisk=sda --size=512
volgroup rhel --pesize=4096 pv.409
logvol swap --fstype="swap" --size=953 --name=swap --vgname=rhel
logvol/--fstype="ext4" --size=13887 --name=root --vgname=rhel

创建新用户(永久)

我们还可以使用kickstart创建新用户,该用户还将在安装后出现

Kickstart命令-用户

使用user通过kickstart创建一个新用户

语法:

user --name=username [OPTIONS]

在"我的RHEL/CentOS 8 kickstart示例"中,我将创建一个用户" hynman"。

# Create user
user --name=hynman --shell=/bin/bash --homedir=/home/hynman  --iscrypted --password=$uSejt/TeWMJVQ/F8$/oFsIanDHS/5b9ssy7gZbQwNkORgRjsQIw4JyFjlTWDh9TVsEXWEy2APpCUNTHipOOEe..ubg3qBZOwpaPtsB.

创建用户(仅用于安装)

我们只能创建用户来监视安装过程。
安装完成后,该用户将从节点中删除。

Kickstart命令-sshpw

  • 在安装过程中,我们可以与安装程序进行交互并通过SSH连接监视其进度

  • 使用sshpw命令创建用于登录的临时帐户。

  • 该命令的每个实例都会创建一个单独的帐户,该帐户仅在安装环境中存在。

  • 这些帐户不会传输到已安装的系统。

语法:

sshpw --username=name [OPTIONS] password

在"我的CentOS/RHEL 8 kickstart示例"中,我创建一个用户" admin"来监视安装情况:

sshpw --username=admin --iscrypted --password=$PMLcSXd.w5pBvC.u$D06Ip60h/iWExxQ09gMi5aAbFaDK.NtLOgOZ56uU6kw.uUy/9/Mmw6vYBjs8Hw50y0Rx4m0yMdH0Vt5EUEsRI.

建立新群组

我们也可以使用kickstart创建一个新组

Kickstart命令-组

  • 如果已经存在具有给定名称或者GID的组,则此命令将失败。

  • 用户命令可用于为新创建的用户创建新组。

  • 它在系统上创建一个新的用户组。

语法:

group --name=name [--gid=gid]

必填选项

  • --name =提供组名。

启用或者禁用防火墙

我们可以在安装阶段启用或者禁用防火墙

Kickstart命令-防火墙

它指定已安装系统的防火墙配置。

语法:

firewall --enabled|--disabled [incoming] [OPTIONS]

其中

  • --enabled或者--enable-拒绝不响应出站请求(例如DNS答复或者DHCP请求)的传入连接。

  • --disabled或者--disable-不配置任何iptables规则。

启用模块

我们也可以使用kickstart启用模块

Kickstart命令-模块

使用此命令在kickstart脚本中启用软件包模块流。

语法:

module --name=NAME [--stream=STREAM]

必填选项

  • --name =指定要启用的模块的名称。
    将NAME替换为实际名称。

启用或者禁用SELinux

我们也可以使用kickstart启用或者禁用selinux

Kickstart命令-Selinux

  • 它在已安装的系统上设置SELinux的状态。

  • SELinux的默认策略是强制实施。

语法:

selinux [--disabled|--enforcing|--permissive]

选项:

  • --enforcing启用SELinux并使用默认的目标策略。

  • --permissive根据SELinux策略输出警告,但实际上不执行该策略。

  • --disabled完全禁用系统上的SELinux。

套件选择

Kickstart使用%packages命令开始的部分来选择要安装的软件包。

Kickstart命令-%packages

  • 我们可以通过这种方式安装软件包,组,环境,模块流和模块配置文件。

  • 使用%packages命令开始Kickstart部分,该部分描述了要安装的软件包。

  • %packages部分必须以%end命令结尾。

指定组

  • 指定组,一行的一个条目,以@符号开头,然后是完整的组名称或者组ID

  • 我们可以从dnf grouplist列表中获取支持的选项的列表

%packages
@X Window System
@Desktop
@Sound and Video
%end

指定单个包装

  • 通过名称(一行的一个条目)指定单个软件包。
    我们可以在包名称中使用星号(*)作为通配符。
    例如:
%packages
sqlite
curl
aspell
docbook*
%end

在"我的RHEL/CentOS 8 kickstart示例"中,我使用了Virtualization Host

%packages
@^Virtualization Host
kexec-tools
%end

启用或者禁用Kdump

Kickstart命令-%addon com_redhat_kdump

此命令配置kdump内核崩溃转储机制。

语法:

%addon com_redhat_kdump [OPTIONS]
%end

选项:

  • --enable在已安装的系统上启用kdump。

  • --disable在已安装的系统上禁用kdump。

  • --reserve-mb =我们要在MiB中为kdump保留的内存量

在"我的RHEL/CentOS 8 kickstart示例"中,我使用了"自动"自动为kdump保留所需的内存:

%addon com_redhat_kdump --enable --reserve-mb='auto'
%end

套用密码政策

Kickstart命令-pwpolicy

  • 使用此命令可在安装过程中强制执行自定义密码策略。

  • 该策略要求我们为root,用户或者luks用户帐户创建密码。

  • 诸如密码长度和强度之类的因素决定了密码的有效性。

有关支持的选项的列表,请参阅《 Red Hat高级安装指南》。

在"我的RHEL/CentOS 8 kickstart示例"中,我使用了以下密码策略:

%anaconda
pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty
pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok
pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty
%end