A.3. Satellite 特定的函数和变量


本节列出了 ERB 模板的特定 Satellite 功能和变量。请注意,其中一些可以在任何类型的模板中使用,例如,作业模板只接受 @host 变量和来自 表 A.4 “Kickstart 特定变量” 的变量,仅适用于 Kickstart 模板。
您可以在所有类型的模板中使用下表中列出的功能。
Expand
表 A.1. 通用功能
Name描述
indent(n)使用没有缩进的代码片段模板时,使用没有缩进的代码片段模板使用 n 个空格。
foreman_url(kind)将完整的 URL 返回到给定类型的主机渲染模板。例如,"provision"类型的模板通常位于 http://HOST/unattended/provision
snippet(name)呈现指定的代码片段模板。有助于嵌套自定义模板。
snippets(file)呈现 Foreman 数据库中找到的指定代码片段,如果数据库中找不到,尝试从 无人值守/snippets/ 目录中加载它。
snippet_if_exists(name)呈现指定的代码片段,如果没有找到指定名称的代码片段,则跳过。

例 A.1. 使用代码片段和缩进功能

以下语法将 subscription_manager_registration 片断导入到模板,并将其缩进四个空格:
<%= indent 4 do
snippet 'subscription_manager_registration'
end %>
Copy to Clipboard Toggle word wrap
在作业模板中可以使用以下功能:有关使用示例,请参阅 第 12.2.4 节 “创建高级模板”
Expand
表 A.2. 特定于作业模板的功能
Name描述
input(input_name)返回作业执行上指定输入的值。
render_template(name, parameters)呈现指定的模板,类似于通用 snippet ()函数,但启用向模板传递参数。
以下变量允许使用模板中的主机数据。
Expand
表 A.3. 特定于主机的变量和功能
Name描述
@host.architecture主机的构架。
@host.bond_interfaces返回所有绑定接口的数组。请参阅 注意
@host.capabilities系统调配的方法,可以是 build (如 kickstart)或图像。
@host.certname主机的 SSL 证书名称。
@host.diskLayout主机的磁盘布局。可以从操作系统继承。
@host.domain主机的域。
@host.environment主机的 Puppet 环境。
@host.facts返回一个来自 Facter 的 Ruby 事实哈希。例如,若要从输出中访问 "ipaddress" 事实,指定 @host.facts['ipaddress']。
@host.grub_pass返回主机的 GRUB 密码。
@host.hostgroup主机的主机组。
@host.info['parameters']返回包含主机参数信息的 Ruby 哈希。例如,使用 @host.info['parameters']['lifecycle_environment'] 来获取主机的生命周期环境。
@host.image_build?如果使用镜像置备主机,则返回 true
@host.interfaces包含包括了主接口的所有可用主机接口的数组。请参阅 注意
@host.interfaces_with_identifier('IDs')返回具有给定标识符的接口数组。您可以将多个标识符数组作为输入传递,如 @host.interfaces_with_identifier (['eth0', 'eth1'])。请参阅 注意
@host.ip主机的 IP 地址。
@host.location主机的位置。
@host.mac主机的 MAC 地址。
@host.managed_interfaces返回一组受管接口(不包括 BMC 和绑定接口)。请参阅 注意
@host.medium分配的操作系统安装介质。
@host.name主机的全名。
@host.operatingsystem.family 操作系统系列。
@host.operatingsystem.major所分配操作系统的主版本号。
@host.operatingsystem.minor所分配操作系统的次要版本号。
@host.operatingsystem.name分配的操作系统名称。
@host.operatingsystem.boot_files_uri(@host.medium,@host.architecture)指向内核和 initrd 的完整路径,返回一个数组。
@host.os.medium_uri(@host) 用于置备的 URI (安装介质中配置的路径)。
@host.param_false?(name)如果 给定名称的 host 参数评估为 false,则返回 false。
@host.param_true?(name) 如果 给定名称的 host 参数评估为 true,则返回 true。
@host.params['parameter_name']返回指定参数的值。
@host.primary_interface返回主机的主接口。
@host.provider计算资源提供商。
@host.provision_interface返回主机的调配接口。返回接口对象。
@host.ptable分区表名称。
@host.puppetmaster主机应使用的 Puppet 主机。
@host.pxe_build?如果使用网络或 PXE 置备主机,则返回 true
@host.shortname主机的短名称。
@host.sp_ipBMC 接口的 IP 地址。
@host.sp_macBMC 接口的 MAC 地址。
@host.sp_nameBMC 接口的名称。
@host.sp_subnetBMC 网络的子网。
@host.subnet.dhcp如果为这个主机配置了 DHCP 代理,则返回 true
@host.subnet.dns_primary主机的主 DNS 服务器。
@host.subnet.dns_secondary主机的辅助 DNS 服务器。
@host.subnet.gateway主机的网关。
@host.subnet.mask主机的子网掩码。
@host.url_for_boot(:initrd)与此主机关联的 initrd 镜像的完整路径。不建议使用变量,因为它不进行干预。
@host.url_for_boot(:kernel)与此主机关联的内核的完整路径。不建议使用此变量,首选 boot_files_uri。
@provisioning_type根据调配类型,等于 'host' 或 'hostgroup'。
@static如果网络配置是静态,则返回 true
@template_name正在呈现的模板的名称。
grub_pass返回包括在 md5pass 参数中的 GRUB 密码,即 is-- md5pass=#{@host.grub_pass}
ks_console使用端口和主机的波特率(可以添加到内核行中)返回字符串。例如 console=ttyS1,9600
root_pass返回为系统配置的 root 密码。
注意
与网络接口相关的主机变量,如 @host.interfaces@host.bond_interfaces 返回在阵列中分组的接口数据。要提取特定接口的参数值,请使用 Ruby 方法解析阵列。例如,要从阵列中获取有关第一个接口的信息,并在 kickstart 模板中使用它:
<% myinterface = @host.interfaces.first %>
IPADDR="<%= myinterface.ip %>"
NETMASK="<%= myinterface.subnet.mask %>"
GATEWAY="<%= myinterface.subnet.gateway %>"
Copy to Clipboard Toggle word wrap
您可以迭代 interface 数组,例如提取接口名称的数组:
<% ifnames = []
@host.interfaces.each do |i|
  ifnames.push(i.name)
end %>
Copy to Clipboard Toggle word wrap

例 A.2. 使用特定于主机的变量

以下示例检查主机是否启用了 Puppet 和 Puppetlabs 存储库:
<%
pm_set = @host.puppetmaster.empty? ? false : true
puppet_enabled = pm_set || @host.param_true?('force-puppet')
puppetlabs_enabled = @host.param_true?('enable-puppetlabs-repo')
%>
Copy to Clipboard Toggle word wrap
以下示例演示了如何捕获主机操作系统的次版本和主版本,可用于软件包相关决策:
<%
os_major = @host.operatingsystem.major.to_i
os_minor = @host.operatingsystem.minor.to_i
%>

<% if ((os_minor < 2) && (os_major < 14)) -%>
...
<% end -%>
Copy to Clipboard Toggle word wrap
如果主机的子网启用了 DHCP 引导模式,以下示例导入 'kickstart_networking_setup' 片断:
<% subnet = @host.subnet %>
<% if subnet.respond_to?(:dhcp_boot_mode?) -%>
<%= snippet 'kickstart_networking_setup' %>
<% end -%>
Copy to Clipboard Toggle word wrap
大多数常见的 Ruby 方法都可用于主机特定变量。例如,要提取主机的 IP 地址的最后一个片段,您可以使用:
<% @host.ip.split('.').last %>
Copy to Clipboard Toggle word wrap
以下变量设计为在 kickstart 配置模板中使用。
Expand
表 A.4. Kickstart 特定变量
Name描述
@arch 主机架构名称,与 @host.architecture.name 相同。
@dynamic 如果使用的分区表是 %pre 脚本(在表的第一行)中,返回 true
@epel一个命令,它会自动安装 epel-release rpm 的正确版本。在 %post 脚本中使用。
@mediapath 提供 URL 命令的完整 kickstart 行。
@osver 操作系统主要版本号,与 @host.operatingsystem.major 相同。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat