# Warewulf template struct (tstruct) This Warewulf template serves as a complete example of the variables available to Warewulf templates. It may also be rendered against a node to debug its apparent configuration. wwctl overlay show --render $nodename debug tstruct.md.ww The template data structure is defined in internal/pkg/overlay/datastructure.go, though it also references data from other structures. ## Build - BuildHost: {{ .BuildHost }} - BuildTime: {{ .BuildTime }} - BuildTimeUnix: {{ .BuildTimeUnix }} - BuildSource: {{ .BuildSource }} - Overlay: {{ .Overlay }} ## Warewulf server - Port: {{ .Warewulf.Port }} - Secure: {{ .Warewulf.Secure }} - UpdateInterval: {{ .Warewulf.UpdateInterval }} - AutobuildOverlays: {{ .Warewulf.AutobuildOverlays }} - EnableHostOverlay: {{ .Warewulf.EnableHostOverlay }} ### Network - Ipaddr: {{ .Ipaddr }} - IpCIDR: {{ .IpCIDR }} - Ipaddr6: {{ .Ipaddr6 }} - Netmask: {{ .Netmask }} - Network: {{ .Network }} - NetworkCIDR: {{ .NetworkCIDR }} - Ipv6: {{ .Ipv6 }} ### DHCP - Dhcp.Enabled: {{ .Dhcp.Enabled }} - Dhcp.Template: {{ .Dhcp.Template }} - Dhcp.RangeStart: {{ .Dhcp.RangeStart }} - Dhcp.RangeEnd: {{ .Dhcp.RangeEnd }} - Dhcp.SystemdName: {{ .Dhcp.SystemdName }} ### NFS - Enabled: {{ .Nfs.Enabled }} - SystemdName: {{ .Nfs.SystemdName }} {{- range $index, $export := .Nfs.ExportsExtended }} - ExportsExtended[{{ $index }}]: - Path: {{ $export.Path }} - ExportOptions: {{ $export.ExportOptions }} {{- end }} ### SSH {{- if gt (len .Ssh.KeyTypes) 0 }} - Key types: {{- range $index, $keyType := .Ssh.KeyTypes }} - {{ $keyType }} {{- end }} - First key type: {{ index .Ssh.KeyTypes 0 }} {{- end }} ## Node The current node may also be accessed as .ThisNode, which provides access to node methods in addition to its fields. - Id: {{ .Id }} - Hostname: {{ .Hostname }} - Comment: {{ .Comment }} - ClusterName: {{ .ClusterName }} - ImageName: {{ .ImageName }} - Ipxe: {{ .Ipxe }} - RuntimeOverlay: {{- range $index, $value := .RuntimeOverlay }} - {{ $value }} {{- end }} - SystemOverlay: {{- range $index, $value := .SystemOverlay }} - {{ $value }} {{- end }} - Init: {{ .Init }} - Root: {{ .Root }} - AssetKey: {{ .AssetKey }} - Discoverable: {{ .Discoverable }} - Profiles: {{- range $index, $value := .Profiles }} - {{ $value }} {{- end }} - Tags: {{- range $key, $value := .Tags }} - {{ $key }}={{ $value }} {{- end }} - Kernel: - Version: {{ .Kernel.Version }} - Args: {{ .Kernel.Args | join " " }} - Ipmi: - UserName: {{ .Ipmi.UserName }} - Password: {{ .Ipmi.Password }} - Ipaddr: {{ .Ipmi.Ipaddr }} - Netmask: {{ .Ipmi.Netmask }} - Port: {{ .Ipmi.Port }} - Gateway: {{ .Ipmi.Gateway }} - Interface: {{ .Ipmi.Interface }} - Write: {{ .Ipmi.Write }} - Tags: {{- range $key, $value := .Ipmi.Tags }} - {{ $key }}={{ $value }} {{ end }} {{- range $index, $netdev := .NetDevs }} - NetDevs[{{ $index }}]: - Type: {{ $netdev.Type }} - OnBoot: {{ $netdev.OnBoot }} ({{ $netdev.OnBoot.BoolDefaultTrue }}) - Device: {{ $netdev.Device }} - Hwaddr: {{ $netdev.Hwaddr }} - Ipaddr: {{ $netdev.Ipaddr }} - Ipaddr6: {{ $netdev.Ipaddr6 }} - Prefix: {{ $netdev.Prefix }} - Netmask: {{ $netdev.Netmask }} - Gateway: {{ $netdev.Gateway }} - MTU: {{ $netdev.MTU }} - Primary: {{ $netdev.Primary }} - Tags: {{- range $key, $value := $netdev.Tags }} - {{ $key }}={{ $value }} {{- end }} {{- end }} {{- range $key, $value := .Resources }} - Resource[{{$key}}]: {{ $value }} {{- end }} ## Other nodes All nodes in the registry are available to all templates in the .AllNodes field. Each node provides access to all node fields, as shown above. - AllNodes: {{- range $index, $node := .AllNodes }} - {{ $node.Id }} {{- end }}