909d427610
Change-Id: I53384561517070a0dca901ee263a5c1a1e55dffa Relates-To: #341
72 lines
1.7 KiB
Markdown
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
|