跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / AutoYaST 指南 / 了解和创建 AutoYaST 控制文件 / 创建 AutoYaST 控制文件
适用范围 SUSE Linux Enterprise Server 15 SP5

3 创建 AutoYaST 控制文件

3.1 收集信息

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

  • 硬盘类型和大小

  • 图形界面和连接的监视器(如果有)

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

此外,请校验 autoyast2-installationautoyast2 均已安装。

3.2 使用配置管理系统 (CMS)

我们提供了基于 YaST 的配置界面,用于创建一个或多个计算机的控制文件。此系统依赖于现有模块,这些模块通常用于在常规操作模式下配置计算机,例如在安装 SUSE Linux Enterprise Server 后进行配置。

配置管理系统可让您轻松创建控制文件,以及管理可在包含多个客户端的联网环境中使用的配置软件源。

配置系统
图 3.1︰ 配置系统

3.2.1 创建新控制文件

创建 AutoYaST 配置文件的最简单方法是使用现有 SUSE Linux Enterprise Server 系统作为模板。在已安装的系统上,启动 YaST › 杂项 › 自动安装配置。然后从菜单中选择工具 › 创建参考配置文件。选择您要包含在配置文件中的系统组件。或者,通过启动 YaST › 杂项 › 自动安装克隆系统,或在命令行中运行 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) 之间的接口

提示
提示:使用 Emacs 作为 XML 编辑器

内置的 nxml-mode 将 Emacs 转变成了一个具有自动标记填写和验证功能的成熟 XML 编辑器。有关如何设置 nxml-mode 的说明,请参见 Emacs 帮助。

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

如果您有一个模板并想要通过脚本或命令行更改一些设置,请使用 xsltproc 之类的 XSLT 处理器。例如,如果您有一个 AutoYaST 控制文件,而出于任何原因您想要通过脚本填写主机名则可以使用 XSLT。(如果您经常需要执行此操作,应考虑编写操作脚本。)

首先创建一个 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 部分已包含一个域元素,您将获得另一个域元素,如此会导致冲突。

有关 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.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
警告
警告:脚本以 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

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