自动安装配置文件

自动安装配置文件决定了如何安装操作系统。例如,您可以指定更多要传递给安装程序的内核参数。

配置文件最重要的部分是“自动安装文件”。手动执行安装时,必须向安装程序提供相关信息,例如分区和网络信息以及用户细节。您可以使用自动安装文件以脚本形式提供此类信息。这种类型的文件有时也称为“答案文件”。

在 SUSE Manager 中,您可以使用两种不同的配置文件,具体取决于您要安装的客户端的操作系统:

  • 对于 SUSE Linux Enterprise 或 openSUSE 客户端,请使用 AutoYaST。

  • 对于 Red Hat Enterprise Linux 客户端,请使用 Kickstart。

如果您要安装具有不同操作系统的客户端,可以使用 AutoYaST 和 Kickstart 配置文件。

配置文件中包含的自动安装文件可以包含变量和代码段。有关变量和代码段的信息,请参见模板语法

1. 声明配置文件

准备好自动安装文件和发行套件后,您可以创建配置文件来管理 SUSE Manager 服务器上的自动安装。配置文件会决定如何安装您选择的此发行套件。创建配置文件的其中一个方式是上载 AutoYaST 或 Kickstart 文件。或者,您也可以使用 Web UI 向导(仅针对 Kickstart)。

过程:通过上载创建自动安装配置文件
  1. 在 SUSE Manager Web UI 中,导航到系统  自动安装  配置文件

  2. 单击 上载 Kickstart/AutoYaST 文件

  3. 标签字段中,键入配置文件的名称。不要使用空格。

  4. 自动安装树字段中,选择要用于此配置文件的可自动安装的发行套件。

  5. 虚拟化类型字段中,选择要用于此配置文件的虚拟化类型,或选择(如果您不想使用此配置文件创建新的虚拟机)。

  6. 将自动安装文件的内容复制到文件内容字段,或使用要上载的文件字段直接上载文件。

    有关此处要包含的细节的详细信息,请参见 AutoYaST 配置文件Kickstart 配置文件

  7. 单击 创建 以创建配置文件。

过程:通过向导创建 Kickstart 配置文件
  1. 在 SUSE Manager Web UI 中,导航到系统  自动安装  配置文件

  2. 单击 创建 Kickstart 配置文件

  3. 标签字段中,键入配置文件的名称。不要使用空格。

  4. 基础通道字段中,选择要用于此配置文件的基础通道。系统会根据可用的发行套件填充此字段。如果您需要的基础通道不可用,请检查您是否正确创建了发行套件。

  5. 虚拟化类型字段中,选择要用于此配置文件的虚拟化类型,或选择(表示不进行虚拟化)。

  6. 单击 下一步

  7. 发行套件文件位置中,键入 SUSE Manager 服务器上安装的安装媒体的路径。

  8. 单击 下一步

  9. 提供客户端上 root 用户的口令。

  10. 单击 完成

  11. 查看新配置文件的细节,并视需要进行自定义。

创建自动安装配置文件时,您可以选中始终为此基础通道使用最新的树。此设置可让 SUSE Manager 自动提取与指定基础通道关联的最新发行套件。如果您以后添加新发行套件,SUSE Manager 会使用最近创建或修改的发行套件。

更改虚拟化类型通常需要更改配置文件加载程序和分区选项。这会重写您的自定义设置。请在保存前导航到分区选项卡校验新的或更改后的设置。

来自发行套件和配置文件的内核选项会进行合并。

您可以更改自动安装配置文件的细节和设置,方法是导航到系统  自动安装  配置文件,然后单击要编辑的配置文件的名称。或者,可导航到系统  系统列表,选择要置备的客户端,然后导航到置备  自动安装子选项卡。

2. AutoYaST 配置文件

AutoYaST 配置文件由标识该配置文件的标签、指向可自动安装的发行套件的自动安装树、各种选项以及最重要的 AutoYaST 安装文件组成。

AutoYaST 安装文件是一个 XML 文件,用于向 AutoYaST 安装程序提供指示。AutoYaST 将其称为“控制文件”。有关 AutoYaST 安装文件的完整语法,请参见 https://doc.opensuse.org/projects/autoyast/#cha-configuration-installation-options

SUSE 提供了 AutoYaST 安装文件模板,您可以基于它们创建自己的自定义文件。您可在 https://github.com/SUSE/manager-build-profiles 上的 AutoYaST 目录中找到这些模板。使用前,需要为其中的每个配置文件设置一些变量。请参见脚本随附的 README 文件确定您需要的变量。有关在 AutoYaST 脚本中使用变量的详细信息,请参见变量

在 AutoYaST 安装文件中,用于通过 SUSE Manager 安装的最重要的部分如下:

  • <add-on> 用于向安装添加子通道

    请参见 https://doc.opensuse.org/projects/autoyast/#Software-Selections-additional[],其中包含 ``<add-on>`` 示例
  • <general>$SNIPPET('spacewalk/sles_no_signature_checks')</general> 禁用签名检查

  • <software> 用于为 Unified Installer 指定产品

    请参见 https://doc.opensuse.org/projects/autoyast/#CreateProfile-Software[],其中包含“<software>”示例
  • <init-scripts config:type="list">$SNIPPET('spacewalk/minion_script')</init-scripts> 用于将客户端作为 Salt 客户端注册到 SUSE Manager。

有关 AutoYaST 的详细信息,请参见 https://doc.opensuse.org/projects/autoyast/

近期一个基于 Salt 的方案 Yomi 可替代 AutoYaST。有关 Yomi 的信息,请参见 使用 Yomi 安装

3. Kickstart 配置文件

Kickstart 配置文件提供了大量配置选项。要创建这些配置文件,您可以上载它们,也可以使用专用向导。

Kickstart 配置文件允许您使用文件保留列表。如果您有许多自定义配置文件位于要使用 Kickstart 重新安装的客户端上,则可以将它们保存为列表,并将该列表与 Kickstart 配置文件相关联。

过程:创建文件保留列表
  1. 在 SUSE Manager Web UI 中,导航到系统  自动安装  文件保留,然后单击 创建文件保留列表

  2. 输入适当的标签,并列出要保存的所有文件和目录的绝对路径。

  3. 单击 创建列表

  4. 将该文件保留列表包含到 Kickstart 配置文件中。

  5. 导航到系统  自动安装  配置文件,选择要编辑的配置文件,转到系统细节  文件保留子选项卡,然后选择要包含的文件保留列表。

文件保留列表总大小上限为 1 MB。/dev/hda1/dev/sda1 等特殊设备无法保留。只能使用文件名和目录名,不能使用正则表达式通配符。

有关 Kickstart 的详细信息,请参见 Red Hat 文档。

4. 模板语法

安装文件的部分内容在安装过程中会被替换。变量会被替换为相应的单个值,代码段会被替换为整段文本。转义符或转义部分不会被替换。

名为 Cheetah 的模板引擎允许 Cobbler 进行这些替换。利用此机制,您在重新安装大量系统时就无需为每个系统手动创建配置文件。

您可以在 SUSE Manager Web UI 中创建自动安装变量和代码段。在配置文件中,自动安装文件选项卡可让您查看替换的结果。

  • 有关变量的信息,请参见变量

  • 有关代码段的信息,请参见代码段

  • 有关转义符或文本块的信息,请参见转义

4.1. 变量

可以使用自动安装变量来替换 Kickstart 和 AutoYaST 配置文件中的值。要定义变量,请从配置文件中导航到变量子选项卡,然后在文本框中创建 name=value 对。

例如,您可以创建一个变量来存储客户端的 IP 地址,创建另一个变量来存储其网关的地址。然后可以为通过同一配置文件安装的所有客户端定义这些变量。要执行此操作,请将下面几行添加到变量文本框中:

ipaddr=192.168.0.28
gateway=192.168.0.1

要使用变量,请在配置文件中附加一个 $ 符号来替换相应值。例如,Kickstart 文件的 network 部分可能如下所示:

network --bootproto=static --device=eth0 --onboot=on --ip=$ipaddr \
  --gateway=$gateway

$ipaddr 会解析为 192.168.0.28$gateway 会解析为 192.168.0.1

在安装文件中,变量使用层次结构。系统变量优先于配置文件变量,而配置文件变量优先于发行套件变量。

4.2. 代码段

SUSE Manager 附带了大量预定义的代码段。导航到系统  自动安装  自动安装代码段,以查看现有代码段列表。

通过在自动安装文件中插入 $SNIPPET() 宏来使用代码段。例如,在 Kickstart 中,插入该宏:

$SNIPPET('spacewalk/rhel_register_script')

或者,在 AutoYaST 中,插入该宏:

<init-scripts config:type="list">
  $SNIPPET('spacewalk/sles_register_script')
</init-scripts>

宏会经过 Cobbler 的分析,并会替换为代码段的内容。您还可以存储自己的代码段,以供日后在自动安装文件中使用。单击 创建代码段 以创建新代码段。

下面的示例设置了通用硬盘分区配置的 Kickstart 代码段:

clearpart --all
part /boot --fstype ext3 --size=150 --asprimary
part / --fstype ext3 --size=40000 --asprimary
part swap --recommended

part pv.00 --size=1 --grow

volgroup vg00 pv.00
logvol /var --name=var vgname=vg00 --fstype ext3 --size=5000

下面是使用该代码段的一个示例:

$SNIPPET('my_partition')

4.3. 转义

如果自动安装文件包含 $(example) 这样的外壳脚本变量,则需要使用反斜杠对内容进行转义:\$(example)。对 $ 符号进行转义可防止模板引擎将该符号评估为内部变量。

可以使用 \#raw\#end raw 指令封装代码段或脚本等文本块,从而对其转义。例如:

#raw
#!/bin/bash
for i in {0..2}; do
 echo "$i - Hello World!"
done
#end raw

所有包含 # 符号后接空格的行均视为注释行,因此不会对其进行评估。例如:

# start some section(此为注释)
echo "Hello, world"
# end some section(此为注释)