3 创建 AutoYaST 控制文件 #
3.1 收集信息 #
要创建控制文件,您需要收集有关所要安装系统的信息。这包括硬件数据和网络信息等。请确保已收集有关您要安装的计算机的以下信息:
硬盘类型和大小
图形界面和连接的监视器(如果有)
网络接口和 MAC 地址(如果已知,例如使用 DHCP 时)
此外,请校验 autoyast2-installation 和 autoyast2 均已安装。
3.2 使用配置管理系统 (CMS) #
我们提供了基于 YaST 的配置界面,用于创建一个或多个计算机的控制文件。此系统依赖于现有模块,这些模块通常用于在常规操作模式下配置计算机,例如在安装 SUSE Linux Enterprise Server 后进行配置。
配置管理系统可让您轻松创建控制文件,以及管理可在包含多个客户端的联网环境中使用的配置软件源。
3.2.1 创建新控制文件 #
创建 AutoYaST 配置文件的最简单方法是使用现有 SUSE Linux Enterprise Server 系统作为模板。在已安装的系统上,启动 › › 。然后从菜单中选择 › 。选择您要包含在配置文件中的系统组件。或者,通过启动 › › ,或在命令行中运行 sudo yast clone_system
,创建包含完整系统配置的配置文件。
这两种方法都会创建文件 /root/autoinst.xml
。克隆的配置文件可用于设置与所克隆系统完全相同的克隆。但通常需要调整该文件,以便安装多台极为相似但不完全相同的计算机。为此,可以使用您偏好的文本编辑器/XML 编辑器调整配置文件。
请注意,配置文件中可能包含敏感信息,例如口令哈希和注册密钥。
请仔细查看导出的配置文件,确保使用限制性文件权限。
控制文件的几乎所有资源都可以使用配置管理系统进行配置,只存在几种例外情况。该系统具有灵活性,某些资源的配置与 YaST 控制中心提供的配置相同。除了现有模块和用户熟悉的模块以外,我们还创建了新的界面用于完成特殊和复杂的配置,例如分区、一般选项和软件的配置。
此外,使用 CMS 还能保证生成的控制文件的有效性,并可直接使用该控制文件来启动自动安装。
确保已安装配置系统(软件包 autoyast2
)。使用 YaST 控制中心或者以 root 身份使用以下命令来调用 AutoYaST(确保正确设置 DISPLAY
变量,以启动图形用户界面而不是基于文本的界面):
/sbin/yast2 autoyast
3.3 手动创建/编辑控制文件 #
如果您要手动编辑控制文件,请确保它采用有效语法。要检查语法,请使用发行套件自带的工具。例如,要校验文件的格式是否正确(采用有效的 XML 结构),请使用 xmllint
软件包中提供的实用程序 libxml2
:
xmllint <control file>
如果控制文件的格式不正确(例如,某个标记缺少结束部分),xmllint
将报告错误。
要验证控制文件,请使用同名软件包中的工具 jing
。在验证过程中,会检测放错位置或缺少的标记与属性以及错误的属性值。jing 软件包随 SUSE Software Development Kit 一起提供。
jing /usr/share/YaST2/schema/autoyast/rng/profile.rng <control file>
/usr/share/YaST2/schema/autoyast/rng/profile.rng
由软件包 yast2-schema-default
提供。此文件描述 AutoYaST 配置文件的语法和类。
AutoYaST 可以通过其他产品和模块进行扩展,但纲要不包含这些扩展的规范。正因如此,如果为 AutoYaST 指定使用某个此类扩展的配置文件,它可能会报告该配置文件无效。
因此,从 SUSE Linux Enterprise Server
SP3 开始,AutoYaST 不再验证顶层的未知部分,而是将它们忽略。例如,以下示例中,不会验证 <sap-inst>
,但会照常验证其余部分。
<general> <mode> <confirm config:type="boolean">true</confirm> </mode> </general> <sap-inst> <!-- this section is not validated -->> </sap-inst>
在继续自动安装之前,请修复此类检查发现的所有错误。如果控制文件无效或格式不正确,将无法启动自动安装过程。
您可以使用系统上提供的任何 XML 编辑器,或者支持 XML 的任何文本编辑器(例如 Emacs 和 Vim)。但是,为多台计算机手动创建控制文件并不是最佳做法,应仅将控制文件视为自动安装引擎与配置管理系统 (CMS) 之间的接口。
内置的 nxml-mode 将 Emacs 转变成了一个具有自动标记填写和验证功能的成熟 XML 编辑器。有关如何设置 nxml-mode 的说明,请参见 Emacs 帮助。
3.4 使用 XSLT 通过脚本创建控制文件 #
如果您有一个模板并想要通过脚本或命令行更改一些设置,请使用 xsltproc
之类的 XSLT 处理器。例如,如果您有一个 AutoYaST 控制文件,而出于任何原因您想要通过脚本填写主机名则可以使用 XSLT。(如果您经常需要执行此操作,应考虑编写操作脚本。)
首先创建一个 XSL 文件:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:y2="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns" xmlns="http://www.suse.com/1.0/yast2ns" version="1.0"> <xsl:output method="xml" encoding="UTF-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="source"/> <!-- the parameter names --> <xsl:param name="hostname"/> <xsl:param name="domain"/> <xsl:template match="/"> <xsl:apply-templates select="@*|node()"/> </xsl:template> <xsl:template match="y2:dns"> <xsl:copy> <!-- where to copy the parameters --> <domain><xsl:value-of select="string($domain)"/></domain> <hostname><xsl:value-of select="string($hostname)"/></hostname> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="@*|node()" > <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
此文件需要用户以参数的形式提供主机名和域名。
<xsl:param name="hostname"/> <xsl:param name="domain"/>
控制文件的 DNS 部分包含这些参数的副本。这意味着,如果 DNS 部分已包含一个域元素,您将获得另一个域元素,如此会导致冲突。
有关 XSLT 的详细信息,请访问官方网页 www.w3.org/TR/xslt
3.5 检查控制文件 #
根据使用场景,创建 AutoYaST 配置文件可能会非常困难,特别是当您使用规则/类、ERB 模板或前脚本构建动态配置文件时。有关详细信息,请参见第 III 部分 “使用动态配置文件管理批量安装”。
从 SUSE Linux Enterprise Server
15 SP3 开始,AutoYaST 会在安装期间验证配置文件,并向用户报告发现的任何问题。尽管我们建议您检查配置文件是否正确,但您也可以通过将 YAST_SKIP_XML_VALIDATION
引导参数设为 1
来禁用此行为。
此外,为了简化测试和调试过程,AutoYaST 提供了 check-profile
命令,用于提取、构建以及根据需要导入配置文件,以检测任何潜在问题。
尽管此命令使用的是与安装相同的方法,但结果可能会有所不同,具体取决于当前系统和安装媒体之间的差异:YaST 软件包版本、体系结构等
运行此命令时必须小心,因为安装前脚本和 ERB 代码会以 root
用户身份运行。请仅使用您信任的配置文件。
3.5.1 基本检查 #
使用此命令的最简单的方式就是读取并验证配置文件:
>
sudo
yast2 autoyast check-profile filename=autoinst.xml output=result.xml
result.xml
文件中包含配置文件的评估结果。请注意,即使您未使用任何高级功能,autoinst.xml
和 result.xml
的内容也可能不同。原因是 AutoYaST 在处理配置文件时会执行一些清理操作。
check-profile
也可以处理远程文件:
>
sudo
yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml
3.5.2 运行前脚本 #
(可选)AutoYaST 可以运行配置文件中包含的脚本,并会在执行期间报告发现的任何错误。如果您要使用安装前脚本修改配置文件,此功能会非常有用。要启用此功能,需要将 run-scripts
选项设为 true
。
>
sudo
yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml run-scripts=true
启用 run-scripts
选项时必须要谨慎,因为此类脚本以 root 身份运行,可能会影响当前系统。
3.5.3 导入配置文件 #
即使配置文件正确有效,将其导入时也可能会遇到一些问题。原因是 AutoYaST 在提取、构建和验证配置文件时,不执行任何逻辑检查。
要提早发现此类问题,可使用 check-profile
命令,它会导入配置文件并报告所检测到的问题。由于此过程需要一段时间,您可以将 import-all
选项设为 false
来禁用此行为。
>
sudo
yast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml import-all=false
导入配置文件属于安全的操作,不会以任何方式更改底层系统。