跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文档 / AutoYaST 指南 / 使用动态配置文件管理批量安装 / ERB 模板
适用范围 SUSE Linux Enterprise Server 15 SP3

7 ERB 模板

ERB 模板允许在配置文件中嵌入一些 Ruby 代码,以在安装期间修改配置文件。利用此方法,您可以通过设置值、添加或跳过某些部分等方式,来检查系统并调整配置文件。

要激活 ERB 处理,配置文件的扩展名必须为 .erb(例如,autoyast.xml.erb)。之后,它将无法合并规则/类和 ERB 模板。

7.1 什么是 ERB

ERBEmbedded Ruby,可让您使用 Ruby 编程语言的强大功能来生成不同类型的内容。利用 ERB,您可以在配置文件中包含一些 Ruby 代码,以在运行时根据安装系统调整配置文件。

使用 ERB 时,Ruby 代码包含在 <%%> 符号之间。如果您希望将命令输出包含在最终的配置文件中,只需添加一个等号 (=) 即可。

例 7.1︰ 使用 ERB 包含文件
<bootloader>
  <% require "open-uri" %>
  <%= URI.open("http://192.168.1.1/profiles/bootloader-common.xml").read %>
</bootloader>

AutoYaST 提供了一小组帮助程序函数,以从底层系统中检索信息(例如 disksnetwork_cards)。您可以在第 7.2 节 “模板帮助程序”中查看帮助程序及值列表。

7.2 模板帮助程序

模板帮助程序是 Ruby 方法的集合,可用于配置文件中以检索安装系统的相关信息。

7.2.1 disks

disks 帮助程序可返回检测到的磁盘列表。列表的每个元素包含一些基本信息,例如设备名称或大小。

类型

:device

字符串

设备内核名称(例如 sda)。

:model

字符串

磁盘型号

:serial

字符串

序列号

:size

整数

磁盘大小(以字节为单位)

:udev_names

字符串数组

磁盘 udev 名称列表。您可以使用其中的任何名称来表示设备。

:vendor

字符串

磁盘供应商名称

以下示例中的配置文件会在最大的磁盘上安装系统。它会按大小对现有磁盘列表排序,然后使用最后一个磁盘。之后,它会使用 :device 键作为 device 元素的值。

例 7.2︰ 使用最大的磁盘
<partitioning t="list">
  <drive>
    <% disk = disks.sort_by { |d| d[:size] }.last %> <!-- find the largest disk -->
    <device><%= disk[:device] %></device> <!-- print the disk device name -->
    <initialize t="boolean">true</initialize>
    <use>all</use>
  </drive>
</partitioning>

7.2.2 network_cards

network_cards 帮助程序可返回网卡列表,包括网卡名称,状态信息(例如,它们是否已连接)。

类型

:device

字符串

设备名称(例如 eth0enp3s0

:mac

字符串

MAC 地址

:active

布尔

设备是否处于活动状态

:link

布尔

设备是否已连接

:vendor

字符串

磁盘供应商名称

下面的示例会找到最先连接网络的网卡,并将其配置为使用 DHCP。

例 7.3︰ 配置连接的网卡
<interfaces t="list">
  <% with_link = netword_cards.sort_by { |n| n[:name] }.find { |n| n[:link] } %>
  <% if with_link %>
    <interface>
      <device><%= with_link[:device] %></device>
      <startmode>auto</startmode>
      <bootproto>dhcp</bootproto>
      </interface>
  <% end >
</interfaces>

7.2.3 os_release

os_release 帮助程序可返回操作系统信息,这些信息包含在 /etc/os-release 文件中。

类型

:id

字符串

发行套件 ID(例如 slesopensuse-tumbleweed

:name

字符串

发行套件名称(例如 SLESopenSUSE Tumbleweed

:version

字符串

发行套件版本(例如 15.2

您可以使用这些信息决定要安装的产品,对所有发行套件(SLE 或 openSUSE 发行套件)使用几乎相同的配置文件。

例 7.4︰ 对不同的发行套件重复使用相同的配置文件
<products t="list">
  <% if os_release[:id] == 'sle' %>
  <product>SLES</product>
  <% else %>
  <product>openSUSE</product>
  <% end %<
</products>