Sean Eagan 3ae0bf6c54 Pin airship images for release
This pins to static tags for all airship owned images:

airship/images:
  all: 053c992218601cc49fd4a595ee4873380b132408
airship/airshipctl:
  aiap-*: 892bb6a16d53a0f43571284db83901bef53ed440
  released krm functions: v2.0.2 (030bb123d8fedd39125dd6eae92f48e0d32a7469)
  toolbox krm function (unreleased): 346196e6c1d0dda202464133377aa3ec586719e4

Change-Id: I79eedaf0f61c1bcda58640aed0540e1102b23dc8
Signed-off-by: Sean Eagan <seaneagan1@gmail.com>
2021-04-07 09:21:47 -05:00
..
2020-11-11 16:49:51 +00:00
2020-10-22 00:07:24 +00:00
2020-11-10 12:23:25 -06:00
2020-10-22 00:07:24 +00:00

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, and built using make image.

Function invocation

The function is invoked by authoring a 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