要创建控制文件,需要收集有关要安装的系统的信息。这包括硬件数据和网络信息等。请确保您拥有有关要安装的机器的以下信息
硬盘类型和大小
图形界面和连接的显示器(如果有)
网络接口和 MAC 地址(如果已知,例如在使用 DHCP 时)
另外,请验证是否已安装 autoyast2-installation 和 autoyast2。
要为一台或多台计算机创建控制文件,提供了一个基于 YaST 的配置界面。该系统依赖于现有的模块,这些模块通常用于在常规操作模式下配置计算机,例如在安装 openSUSE Leap 之后。
配置管理系统使您可以轻松创建控制文件并管理配置存储库,以便在具有多个客户端的网络环境中进行使用。
创建 AutoYaST 配置文件的最简单方法是使用现有的 openSUSE Leap 系统作为模板。在已安装的系统上,启动 › › 。然后从菜单中选择 › 。选择要在配置文件中包含的系统组件。或者,通过启动 › › 或从命令行运行 sudo yast clone_system 来创建包含完整系统配置的配置文件。
两种方法都会创建文件 /root/autoinst.xml。克隆的配置文件可用于设置与创建它的系统相同的克隆。但是,通常需要调整该文件以允许安装非常相似但并不相同的多台机器。可以通过使用您最喜欢的文本/XML 编辑器来调整配置文件来完成此操作。
请注意,配置文件可能包含敏感信息,例如密码哈希和注册密钥。
仔细检查导出的配置文件,并确保文件权限具有限制性。
在某些例外情况下,控制文件的几乎所有资源都可以使用配置管理系统进行配置。该系统具有灵活性,并且某些资源的配置与 YaST 控制中心中可用的配置相同。除了现有的熟悉模块之外,还创建了新的界面,用于特殊的复杂配置,例如分区、常规选项和软件。
此外,使用 CMS 可以保证生成的控制文件的有效性及其直接用于启动自动安装。
确保已安装配置系统(软件包 autoyast2)。使用 YaST 控制中心或以 root 用户身份使用以下命令调用 AutoYaST(确保 DISPLAY 变量已正确设置,以启动图形用户界面而不是基于文本的界面)
/sbin/yast2 autoyast
如果手动编辑控制文件,请确保其具有有效的语法。要检查语法,请使用发行版中已有的工具。例如,要验证文件是否格式良好(具有有效的 XML 结构),请使用与 libxml2 软件包一起提供的实用程序 xmllint
xmllint <control file>
如果控制文件格式不正确,例如,如果未关闭某个标记,xmllint 将报告错误。
要验证控制文件,请使用与同名软件包中的工具 jing。在验证期间,会检测到放置或丢失的标记和属性以及错误的属性值。
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 提供使用其中一个扩展的配置文件时,它可能会将配置文件报告为无效。
因此,从 openSUSE Leap 15.3 开始,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 编辑器,具有自动标记完成和验证功能。请参阅 Emacs 帮助以获取有关如何设置 nxml-mode 的说明。
如果您有一个模板并想通过脚本或命令行更改一些内容,请使用 XSLT 处理器,例如 xsltproc。例如,如果您有一个 AutoYaST 控制文件并想出于任何原因通过脚本填写主机名。
首先,创建一个 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 部分中已经存在 domain 元素,您将获得第二个元素,这将导致冲突。
有关 XSLT 的更多信息,请访问官方网页 www.w3.org/TR/xslt
根据使用情况,创建 AutoYaST 配置文件可能很困难,尤其是在使用规则/类、ERB 模板或预脚本构建动态配置文件时。有关更多信息,请参阅 第 III 部分,“使用动态配置文件管理批量安装”。
从 openSUSE Leap 15.3 开始,AutoYaST 在安装期间验证配置文件,并将发现的任何问题报告给用户。虽然建议检查配置文件是否正确,但您可以通过将启动参数 YAST_SKIP_XML_VALIDATION 设置为 1 来禁用此行为。
此外,为了简化测试和调试过程,AutoYaST 提供了 check-profile 命令,该命令负责获取、构建和(可选)导入配置文件,以检测任何潜在问题。
虽然此命令使用与安装相同的方法,但结果可能因当前系统和安装介质之间的差异而异:YaST 软件包版本、体系结构等。
您在使用此命令时必须小心,因为预安装脚本和 ERB 代码将以 root 用户的身份运行。仅使用您信任的配置文件。
使用此命令的最简单方法是读取和验证配置文件
>sudoyast2 autoyast check-profile filename=autoinst.xml output=result.xml
文件 result.xml 包含评估配置文件的结果。请记住,即使您不使用任何高级功能,autoinst.xml 和 result.xml 的内容也可能不同。原因是 AutoYaST 在处理配置文件时会进行一些清理。
check-profile 也可以处理远程文件
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml
可选地,AutoYaST 可以运行配置文件中包含的脚本,并报告执行过程中发现的任何错误。如果使用预安装脚本来修改配置文件,这将特别相关。要启用此功能,需要将 run-scripts 选项设置为 true。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml run-scripts=true
您在使用 run-scripts 选项时必须小心,因为脚本将以 root 身份运行,并且可能会影响当前系统。
即使配置文件正确,在导入配置文件时也可能遇到一些问题。原因是 AutoYaST 在获取、构建和验证配置文件时不会执行任何逻辑检查。
为了预见这些问题,check-profile 命令会导入配置文件并报告检测到的问题。由于这可能需要一段时间,您可以将 import-all 选项设置为 false 以禁用此行为。
>sudoyast2 autoyast check-profile filename=http://192.168.1.100/autoinst.xml output=result.xml import-all=false
导入配置文件是一个安全的操作,不会以任何方式更改底层系统。