跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

3 创建 AutoYaST 配置文件 编辑源文件

3.1 收集信息 编辑源文件

要创建控制文件,需要收集有关要安装的系统的信息。这包括硬件数据和网络信息等。请确保您拥有有关要安装的机器的以下信息

  • 硬盘类型和大小

  • 图形界面和连接的显示器(如果有)

  • 网络接口和 MAC 地址(如果已知,例如在使用 DHCP 时)

另外,请验证是否已安装 autoyast2-installationautoyast2

3.2 使用配置管理系统 (CMS) 编辑源文件

要为一台或多台计算机创建控制文件,提供了一个基于 YaST 的配置界面。该系统依赖于现有的模块,这些模块通常用于在常规操作模式下配置计算机,例如在安装 openSUSE Leap 之后。

配置管理系统使您可以轻松创建控制文件并管理配置存储库,以便在具有多个客户端的网络环境中进行使用。

Configuration system
图 3.1: 配置系统

3.2.1 创建新的控制文件 编辑源文件

创建 AutoYaST 配置文件的最简单方法是使用现有的 openSUSE Leap 系统作为模板。在已安装的系统上,启动 YaST › 杂项 › 自动安装配置。然后从菜单中选择 工具 › 创建参考配置文件。选择要在配置文件中包含的系统组件。或者,通过启动 YaST › 杂项 › 自动安装克隆系统或从命令行运行 sudo yast clone_system 来创建包含完整系统配置的配置文件。

两种方法都会创建文件 /root/autoinst.xml。克隆的配置文件可用于设置与创建它的系统相同的克隆。但是,通常需要调整该文件以允许安装非常相似但并不相同的多台机器。可以通过使用您最喜欢的文本/XML 编辑器来调整配置文件来完成此操作。

Warning
警告:配置文件中的敏感数据

请注意,配置文件可能包含敏感信息,例如密码哈希和注册密钥。

仔细检查导出的配置文件,并确保文件权限具有限制性。

在某些例外情况下,控制文件的几乎所有资源都可以使用配置管理系统进行配置。该系统具有灵活性,并且某些资源的配置与 YaST 控制中心中可用的配置相同。除了现有的熟悉模块之外,还创建了新的界面,用于特殊的复杂配置,例如分区、常规选项和软件。

此外,使用 CMS 可以保证生成的控制文件的有效性及其直接用于启动自动安装。

确保已安装配置系统(软件包 autoyast2)。使用 YaST 控制中心或以 root 用户身份使用以下命令调用 AutoYaST(确保 DISPLAY 变量已正确设置,以启动图形用户界面而不是基于文本的界面)

/sbin/yast2 autoyast

3.3 手动创建/编辑控制文件 编辑源文件

如果手动编辑控制文件,请确保其具有有效的语法。要检查语法,请使用发行版中已有的工具。例如,要验证文件是否格式良好(具有有效的 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 配置文件的语法和类。

Note
注意:模式扩展

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) 之间的接口。

Tip
提示:将 Emacs 用作 XML 编辑器

内置的 nxml-mode 将 Emacs 变成一个功能齐全的 XML 编辑器,具有自动标记完成和验证功能。请参阅 Emacs 帮助以获取有关如何设置 nxml-mode 的说明。

3.4 通过脚本使用 XSLT 创建控制文件 编辑源文件

如果您有一个模板并想通过脚本或命令行更改一些内容,请使用 XSLT 处理器,例如 xsltproc。例如,如果您有一个 AutoYaST 控制文件并想出于任何原因通过脚本填写主机名。

首先,创建一个 XSL 文件

示例 3.1: 用于通过脚本替换主机名/域名的示例文件
<?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

3.5 检查控制文件 编辑源文件

根据使用情况,创建 AutoYaST 配置文件可能很困难,尤其是在使用规则/类、ERB 模板或预脚本构建动态配置文件时。有关更多信息,请参阅 第 III 部分,“使用动态配置文件管理批量安装”

openSUSE Leap 15.3 开始,AutoYaST 在安装期间验证配置文件,并将发现的任何问题报告给用户。虽然建议检查配置文件是否正确,但您可以通过将启动参数 YAST_SKIP_XML_VALIDATION 设置为 1 来禁用此行为。

此外,为了简化测试和调试过程,AutoYaST 提供了 check-profile 命令,该命令负责获取、构建和(可选)导入配置文件,以检测任何潜在问题。

Note
注意:结果可能不同

虽然此命令使用与安装相同的方法,但结果可能因当前系统和安装介质之间的差异而异:YaST 软件包版本、体系结构等。

Warning
警告:仅使用受信任的配置文件

您在使用此命令时必须小心,因为预安装脚本和 ERB 代码将以 root 用户的身份运行。仅使用您信任的配置文件。

3.5.1 基本检查 编辑源文件

使用此命令的最简单方法是读取和验证配置文件

> sudo  yast2 autoyast check-profile filename=autoinst.xml output=result.xml

文件 result.xml 包含评估配置文件的结果。请记住,即使您不使用任何高级功能,autoinst.xmlresult.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
Warning
警告:脚本以 root 身份运行

您在使用 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

导入配置文件是一个安全的操作,不会以任何方式更改底层系统。

打印此页面