Appendix: Variable Substition¶
Data that is downloaded or processed by a ClusterWare head node can often include per-node modifications through a variable substitution framework. Much like a templating system, an admin can create a baseline file, e.g. a kickstart file, and have ClusterWare automatically replace entries with node- or head-specific data. Thus, one can dynamically include the node's name or IP address, or a head-node's base URL or key information.
# example kickstart fragment
# Perform a SOL friendly text-based install.
text
# Pull some basics from the head node.
url --url <root_url()>
lang <head[lang]>
keyboard <head[keymap]>
timezone <head[timezone]>
# include another file
<include(partial.ks)>
ClusterWare currently allows variable substitution in kickstart files, ZTP scripts and configuration files, and the power_uri field for a node. The goal of these substitutions is to provide mechanisms to generalize the files for simpler configuration with fewer node-specific files or commands.
The <include(partial.ks)>
tag shown in the example includes another file
into the output, performing variable substitution on the included content
as well. The include
tag allows a cluster administrator to break larger
files into manageable hunks that can then be included into a
top-level kickstart file, much like a C or C++ "#include <filename>".
Node Attributes, Hardware, and Status¶
Any node's attribute can be referenced as <a[name]>
or <attributes[name]>
and that text will be replaced with the value corresponding to the
“name”. Similarly, values from the hardware section of scyld-nodectl ls -L
can be referenced as <h[name]>
or <hardware[name]>
and status
information is referenced as <s[name]>
or
<status[name]>
. Fields outside of attributes and hardware, such as
index, ip, or MAC can be referenced by <n[name]>
or
<node[name]>
.
Head Node Substitutions¶
In addition to compute node-specific fields, a few head node-specific fields are also available in kickstart files:
|
Kickstart keymap arguments like --vckeymap=X --xlayouts=Y |
|
System locale |
|
Time zone |
When used within downloadable text files, such as kickstart and ZTP files, a few other parameters are available as well:
|
X is a parameter provided as part of the requesting URL |
|
A base URL that should be functional for the requestor |
|
IP address of the parent head node extracted from the base URL |
|
System-wide authorized keys list including head node keys and cluster administrator keys. Suitable for appending to '.ssh/authorized_keys' |
Kickstarting From A Repo¶
When downloading a kickstart file from a repo-based boot configuration, a URL parameter is added that references the repo, allowing for additional substitutions. In this case the substitutions are implemented as functions with a slightly different syntax:
|
Link to the root of the full ISO file if the repo contains one |
|
Link to the full ISO file if the repo contains one |
|
Rarely if ever used. Refers to a specific URL in a ClusterWare repo |
Note that all of these functions accept a repo name or UID as an
argument but will use the automatically provided URL parameter if no
repo is explicitly specified. The <repo_url()>
function also
includes a second optional integer argument to specify the index of
the URL in the referenced repo.