RHEL/CentOS 8 Kickstart示例| Kickstart生成器
在本文中,将介绍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。
我们在生产环境中主要使用url
,cdrom
和nfs
,因此我将解释以下安装方法:
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