自动安装配置文件

在 SUSE Multi-Linux Manager 中,您可以使用两种不同类型的控制文件,具体取决于您要安装的客户端的操作系统:

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

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

自动安装控制文件决定操作系统将如何安装。 例如,您可以指定要传递给安装程序的额外内核参数。

控制文件中最重要的部分是 自动安装文件。 当您手动执行安装时,必须向安装程序提供信息,例如分区和网络信息以及用户详细信息。 自动安装文件是一种以脚本形式提供此信息的方法。 这种类型的文件有时也称为 答案文件

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

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

1. 声明配置文件

当您准备好自动安装文件和发行版后,可以创建控制文件以管理您 SUSE Multi-Linux Manager 服务器上的自动安装。 该控制文件将决定如何安装您选择的此发行版。 创建控制文件的一种方法是上传 AutoYaST 或 Kickstart 文件。 或者,仅适用于 Kickstart,您可以使用 Web UI 向导。

过程:升级通过上载创建自动安装控制文件
  1. 在 SUSE Multi-Linux Manager Web UI 中,导航到 系统  自动安装  控制文件

  2. 单击 上传 Kickstart/AutoYaST 文件

  3. Label 字段中,输入控制文件的名称。 不要使用空格。

  4. Autoinstall Tree 字段中,选择要用于此控制文件的可自动安装的发行套件。

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

  6. 将自动安装文件的内容复制到 File Contents 字段中,或使用 File to Upload 字段直接上传该文件。

    有关此处包含的详细信息,请参见 AutoYaST 控制文件Kickstart 控制文件

  7. 单击 创建 以创建控制文件。

过程:升级通过向导创建 Kickstart 控制文件
  1. 在 SUSE Multi-Linux Manager Web UI 中,导航到 系统  自动安装  控制文件

  2. 单击 创建 Kickstart 控制文件

  3. Label 字段中,输入控制文件的名称。 不要使用空格。

  4. Base Channel 字段中,选择要用于此控制文件的基础频道。 此字段由可用的发行版填充。 如果您需要的基础频道不可用,请检查您是否正确创建了发行版。

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

  6. 单击 下一步

  7. Distribution File Location 中,输入安装在 SUSE Multi-Linux Manager 服务器上的安装介质的路径。

  8. 单击 下一步

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

  10. 单击 完成

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

在创建自动安装控制文件时,您可以检查 Always use the newest Tree for this base channel。 此设置允许 SUSE Multi-Linux Manager 自动选择与指定基础频道关联的最新发行版。 如果您稍后添加新的发行版,SUSE Multi-Linux Manager 将使用最近创建或修改的版本。

更改 Virtualization Type 通常需要更改控制文件的引导加载程序和分区选项。 这可能会覆盖您的自定义设置。 在保存新或更改的设置之前,请通过导航到 Partitioning 选项卡进行验证。

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

您可以通过导航到 系统  自动安装  控制文件 并单击要编辑的控制文件名称来更改自动安装控制文件的详细信息和设置。 或者,导航到 系统  系统列表,选择您要配置的客户端,然后导航到 配置  自动安装 子选项卡。

2. AutoYaST 控制文件

一个 AutoYaST 控制文件由标识该控制文件的 Label、指向可自动安装的发行套件的 Autoinstall Tree、各种选项以及最重要的 AutoYaST 安装文件组成。

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

SUSE 提供 AutoYaST 安装文件的模板,您可以将其用作自己自定义文件的起点。 您可以在 https://github.com/SUSE/manager-build-profilesAutoYast 目录中找到这些模板。 每个控制文件都要求您在使用之前设置一些变量。 检查与脚本一起提供的 README 文件,以确定您需要哪些变量。 有关在 AutoYaST 脚本中使用变量的更多信息,请参见 变量

提供的 AutoYaST 模板不设置任何用户密码。 考虑设置 root 和其他用户帐户及密码或其他身份验证方式。 有关 AutoYaST 控制文件中用户帐户的更多信息,请参见 https://doc.opensuse.org/projects/autoyast/#Configuration-Security-users-and-groups.。

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

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

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

3. Kickstart 配置文件

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

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

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

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

  3. 单击 创建列表

  4. 将文件保留列表包含到您的 Kickstart 控制文件中。

  5. 导航到 系统  自动安装  控制文件,选择要编辑的控制文件,转到 系统详细信息  文件保留 子选项卡,并选择要包含的文件保留列表。

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

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

4. 模板语法

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

一个名为 Cheetah 的模板引擎允许 Cobbler 进行这些替换。 该机制使您能够重新安装大量系统,而无需为每个系统手动创建控制文件。

您可以在 SUSE Multi-Linux Manager Web UI 中创建自动安装变量和代码片段。 在控制文件中,Autoinstallation File 选项卡允许您查看替换的结果。

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

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

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

4.1. 禁用

自动安装变量可以用于将值替换到 Kickstart 和 AutoYaST 控制文件中。 要定义变量,请从控制文件导航到 Variables 子选项卡,并在文本框中创建 name=value 对。

例如,您可以创建一个变量来保存客户端的 IP 地址,另一个变量来保存其网关的地址。 这些变量可以为从同一控制文件安装的所有客户端定义。 为此,请将以下行添加到 Variables 文本框中:

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 Multi-Linux Manager 附带大量预定义的代码片段。 导航到 系统  自动安装  自动安装代码片段 以查看现有代码片段的列表。

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

$SNIPPET('spacewalk/redhat_register_using_salt')

或者,在 AutoYaST 中:

<init-scripts config:type="list">
  $SNIPPET('spacewalk/minion_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 (this is a comment)
echo "Hello, world"
# end some section (this is a comment)