file_from_template_options
Build a file from a template (MiniJinja, Jinja2, Mustache).
⚙️ Compatible targets: Linux, Windows
Parameters
| Name | Documentation |
|---|---|
| destination | Destination file (absolute path on the target node). This parameter is required. |
| engine | Template engine: "minijinja", "jinja2" or "mustache" (defaults to "minijinja"). Choices:
This parameter is optional. |
| data | Data provided to the template as JSON, defaults to the global context if empty. This parameter is optional. |
| template_string | String containing the template to be rendered. This parameter is optional. |
| template_path | Source file containing a template to be rendered (absolute path on the target node). This parameter is optional. |
| show_content | Show the file content in the report, "true" or "false" (defaults to "true"). Choices:
This parameter is optional. |
Outcome conditions
You need to replace ${destination} with its actual canonified value.
- ✅ Ok:
file_from_template_options_${destination}_ok- ☑️ Already compliant:
file_from_template_options_${destination}_kept - 🟨 Repaired:
file_from_template_options_${destination}_repaired
- ☑️ Already compliant:
- ❌ Error:
file_from_template_options_${destination}_error
Example
method: file_from_template_options
params:
show_content: 'true'
data: OPTIONAL_VALUE
engine: minijinja
destination: VALUE
template_path: OPTIONAL_VALUE
template_string: OPTIONAL_VALUE
Documentation
The file_from_template method renders a template into a destination file using one of the supported template engines.
Template Rendering:
Renders a template using the specified engine (minijinja, mustache, or jinja2) into the file given in destination.
Data Sources:
- If
datais provided, the template will only use those data to render the template. The agent datastate will not be passed to the templating engine. - If
datais not provided, the agent datastate is used instead (containing the existing variables and classes of the current agent run).
Template Source:
template_string: Inline template string.template_path: Path to an external template file.- These two options are mutually exclusive — exactly one must be used.
Show Content:
- If
show_content: true, the rendered file’s content will be dumped to the report.
Engines:
minijinja- Aborts rendering if undefined variables are used. Custom filters can not be added but the agent comes with a great variety of builtin usable filters.
mustache- Ignores undefined variables gracefully.
jinja2- Aborts rendering if undefined variables are used.
- Requires
python3-jinja2to be installed. - Not supported on Windows agents
Complete documentation for the different supported engines can be found here.
Examples
Inline template string
name: render_simple
method: file_from_template_options
params:
destination: /tmp/render.txt
engine: minijinja
template_string: "{{foo}}"
data: "{\"foo\": \"bar\"}"
show_content: true
This renders the string bar into /tmp/render.txt and also outputs the content.
Template file with Mustache
name: render_from_file
method: file_from_template_options
params:
destination: /tmp/result.txt
engine: mustache
template_path: ${resources_dir}/template.mustache
data: "{\"user\": \"Alice\", \"role\": \"admin\"}"
show_content: false
This renders the template.mustache template with provided JSON data and writes it to /tmp/result.txt.
Jinja2 with missing variables (will fail)
name: render_fail
method: file_from_template_options
params:
destination: /tmp/fail.txt
engine: jinja2
template_string: "{{unknown}}"
show_content: true
This will return an error since unknown is not defined in data or the agent context.