airshipctl/krm-functions/templater/README.md
Sirajudeen 909d427610 Container build for Templater plugin
Change-Id: I53384561517070a0dca901ee263a5c1a1e55dffa
Relates-To: #341
2020-10-22 00:07:24 +00:00

72 lines
1.7 KiB
Markdown

# Templater function
This plugin is an implementation of a templater function written using `go` and uses the `kyaml`
and `airshipctl` libraries for parsing the input and writing the output.
## Function implementation
The function is implemented as an [image](image), and built using `make image`.
## Function invocation
The function is invoked by authoring a [Local Resource](local-resource)
with `metadata.annotations.[config.kubernetes.io/function]` and running:
kustomize fn run local-resource/
This exits non-zero if there is an error.
## Running the Example
Run the function with:
kustomize fn run local-resource/
The generated resources will appear in local-resource/
```
$ cat local-resource/*
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: node-1
spec:
bootMACAddress: 00:aa:bb:cc:dd
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: node-2
spec:
bootMACAddress: 00:aa:bb:cc:ee
...
```
### Configuration file format
`Templater` configuration resource is represented as a standard
k8s resource with Group, Version, Kind and Metadata header. Templater
configuration is defined using `template` and `values` fields with
following structure.
values:
hosts:
- macAddress: 00:aa:bb:cc:dd
name: node-1
- macAddress: 00:aa:bb:cc:ee
name: node-2
template: |
{{ range .hosts -}}
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
name: {{ .name }}
spec:
bootMACAddress: {{ .macAddress }}
{{ end -}}
`values` defines the substituion value as Map.
`template` defines the template with placeholders to substitue the value from the
values Map