You can use macros in ERB templates to add user inputs, load host data, and perform other tasks when writing provisioning, job, or report templates. Availability and options vary by template type.
For more information about the macros available for each template type, navigate to the following pages in the {ProjectWebUI}:
-
Monitor > Reports > Report Templates > Create Template for report templates
-
Hosts > Templates > Job templates > New Job Template for job templates
Click the Help tab on these pages for more details.
- input
-
Using the
inputmacro, you can customize the input data that the template can work with. You can define the input name, type, and the options that are available for users. For report templates, you can only use user inputs. When you define a new input and save the template, you can then reference the input in the ERB syntax of the template body.<%= input('cpus') %>This loads the value from user input
cpus. - load_hosts
-
Using the
load_hostsmacro, you can generate a complete list of hosts.<%- load_hosts().each_record do |host| -%> <%= host.name %>
Use the
load_hostsmacro with theeach_recordmacro to load records in batches of 1000 to reduce memory consumption.If you want to filter the list of hosts for the report, you can add the option
search: input('Example_Host'):<% load_hosts(search: input('Example_Host')).each_record do |host| -%> <%= host.name %> <% end -%>In this example, you first create an input that you then use to refine the search criteria that the
load_hostsmacro retrieves. - report_row
-
Using the
report_rowmacro, you can create a formatted report for ease of analysis. Thereport_rowmacro requires thereport_rendermacro to generate the output.Example input:
<%- load_hosts(search: input('Example_Host')).each_record do |host| -%> <%- report_row( 'Server FQDN': host.name ) -%> <%- end -%> <%= report_render -%>Example rendering:
Server FQDN host1.example.com host2.example.com host3.example.com host4.example.com host5.example.com host6.example.com
You can add extra columns to the report by adding another header. The following example adds IP addresses to the report:
Example input:
<%- load_hosts(search: input('host')).each_record do |host| -%> <%- report_row( 'Server FQDN': host.name, 'IP': host.ip ) -%> <%- end -%> <%= report_render -%>Example rendering:
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
-
This macro is available only for report templates.
Using the
report_rendermacro, you create the output for the report. During the template rendering process, you can select the format that you want for the report. YAML, JSON, HTML, and CSV formats are supported.<%= report_render -%>
- render_template()
-
This macro is available only for job templates.
Using this macro, you can render a specific template. You can also enable and define arguments that you want to pass to the template.
- truthy
-
Using the
truthymacro, you can declare if the value passed is true or false, regardless of whether the value is an integer or boolean or string.This macro helps to avoid confusion when your template contains multiple value types. For example, the boolean value
trueis not the same as the string value"true". With this macro, you can declare how you want the template to interpret the value and avoid confusion.You can use
truthyto declare values as follows:truthy?("true") => true truthy?(1) => true truthy?("false") => false truthy?(0) => false - falsy
-
The falsy macro serves the same purpose as the truthy macro.
Using the
falsymacro, you can declare if the value passed in is true or false, regardless of whether the value is an integer or boolean or string.You can use
falsyto declare values as follows:falsy?("true") => false falsy?(1) => false falsy?("false") => true falsy?(0) => true