A.6. templates Macros
如果要编写自定义模板,您可以使用以下一些宏。根据模板类型,以下一些宏有不同的要求。
有关报告模板可用宏的更多信息,请在 Satellite Web UI 中导航到 Monitor > Report Templates,然后点击 Create Template。在 Create Template 窗口中,单击 Help 选项卡。
有关作业模板可用宏的更多信息,在 Satellite Web UI 中导航到 Hosts > Job Templates,然后点击 New Job Template。在 New Job Template 窗口中,单击 Help 选项卡。
- 输入
使用
输入
宏,您可以自定义模板可以使用的输入数据。您可以定义可用于用户的输入名称、类型和选项。对于报告模板,只能使用用户输入。当您定义新输入并保存模板时,您可以在模板正文的 ERB 语法中引用输入。<%= input('cpus') %>
这会从用户输入
cpus
加载值。- load_hosts
使用
load_hosts
宏,您可以生成完整的主机列表。<%- load_hosts().each_record do |host| -%> <%= host.name %>
使用带有
each_record
宏的load_hosts
宏来批量加载 1000 个记录,以减少内存消耗。如果要过滤报告的主机列表,您可以添加选项
search: input ('Example_Host')
:<% load_hosts(search: input('Example_Host')).each_record do |host| -%> <%= host.name %> <% end -%>
在本例中,您首先会创建一个输入,然后使用该输入优化
load_hosts
宏检索的搜索条件。- report_row
使用
report_row
宏,您可以创建一个格式化的报告来简化分析。report_row
宏需要report_render
宏来生成输出。输入示例:
<%- load_hosts(search: input('Example_Host')).each_record do |host| -%> <%- report_row( 'Server FQDN': host.name ) -%> <%- end -%> <%= report_render -%>
渲染示例:
Server FQDN host1.example.com host2.example.com host3.example.com host4.example.com host5.example.com host6.example.com
您可以通过添加另一个标头来向报告添加额外的列。以下示例在报告中添加 IP 地址:
输入示例:
<%- load_hosts(search: input('host')).each_record do |host| -%> <%- report_row( 'Server FQDN': host.name, 'IP': host.ip ) -%> <%- end -%> <%= report_render -%>
渲染示例:
Server FQDN,IP host1.example.com,10.8.30.228 host2.example.com,10.8.30.227 host3.example.com,10.8.30.226 host4.example.com,10.8.30.225 host5.example.com,10.8.30.224 host6.example.com,10.8.30.223
- report_render
这个宏仅适用于报告模板。
使用
report_render
宏,您可以为报告创建输出。在模板渲染过程中,您可以选择您要报告的格式。支持 YAML、JSON、HTML 和 CSV 格式。<%= report_render -%>
- render_template()
这个宏仅适用于作业模板。
使用这个宏,您可以呈现特定的模板。您还可以启用和定义您要传递给模板的参数。
- 真实性
使用
truthy
宏,您可以声明传递的值是否为 true 或 false,无论值是否为整数或布尔值或字符串。此宏有助于避免模板包含多个值类型时出现混淆。例如,布尔值
true
与字符串值"true"
不同。使用这个宏,您可以声明如何希望模板解释值并避免混淆。您可以使用
truthy
来声明值,如下所示:truthy?(“true”) => true truthy?(1) => true truthy?(“false”) => false truthy?(0) => false
- Falsy
falsy 宏与数据源宏的作用相同。
使用
falsy
宏,您可以声明传递的值是否为 true 或 false,无论值是否为整数或布尔值或字符串。您可以使用
falsy
来声明值,如下所示:falsy?(“true”) => false falsy?(1) => false falsy?(“false”) => true falsy?(0) => true