airshipctl/manifests/function/hostgenerator-m3/hosttemplate.yaml
SirishaGopigiri ad555d4d24 Integrate capi v0.4.2 and capm3 v0.5.0
The below manifest changes integrates capi v0.4.2 with capm3
v0.5.0 version. It changes the required manifests files
in the airshipctl. It upgrades capi to v1alpha4 and capm3 to
v1alpha5.

Closes: #518 #560
Change-Id: Ia9ea82ad8052e55f0e70f1038497a919ac7b9270
2021-10-13 13:30:52 -05:00

114 lines
3.4 KiB
YAML

apiVersion: airshipit.org/v1alpha1
kind: Templater
metadata:
name: m3-host-template
annotations:
config.kubernetes.io/function: |-
container:
image: localhost/templater
values:
# hosts:
# (filled in from the comprehensive site-wide host-catalogue)
# hostsToGenerate:
# (filled in with phase-specific host-generation-catalogue)
# commonNetworking:
# (filled in with the type-specific common-networking)
# Additional hardwareProfiles can be defined within their own functions,
# and then substituted into the stanza below.
# See function/hardwareprofile-example for an example of how to do this.
hardwareProfiles:
default:
raid:
hardwareRAIDVolumes: []
softwareRAIDVolumes: []
# Reference: https://github.com/metal3-io/metal3-docs/blob/master/design/baremetal-operator/bios-config.md
#firmware:
# sriovEnabled: false
# virtualizationEnabled: false
# simultaneousMultithreadingEnabled: false
template: |
{{- $envAll := . }}
{{- range .hostsToGenerate }}
{{- $hostName := . }}
{{- $host := index $envAll.hosts $hostName }}
{{- /* If no hardwareProfile is defined for a host, use the default */ -}}
{{- if not $host.hardwareProfile }}
{{- $_ := set $host "hardwareProfile" "default" }}
{{- end }}
{{- $hardwareProfile := index $envAll.hardwareProfiles $host.hardwareProfile }}
{{- if not $hardwareProfile -}}
{{- fail (printf "can't find hardwareProfile %s" $host.hardwareProfile) -}}
{{- end -}}
---
apiVersion: metal3.io/v1alpha1
kind: BareMetalHost
metadata:
annotations:
{{- if $host.labels }}
labels:
{{ toYaml $host.labels | indent 4 }}
{{- end }}
name: {{ $hostName }}
spec:
online: false
bootMACAddress: {{ $host.macAddress }}
bootMode: {{ $host.bootMode }}
networkData:
name: {{ $hostName }}-network-data
namespace: target-infra
bmc:
address: {{ $host.bmcAddress }}
credentialsName: {{ $hostName }}-bmc-secret
disableCertificateVerification: {{ default false $host.disableCertificateVerification }}
{{- if $hardwareProfile.firmware }}
firmware:
{{ toYaml $hardwareProfile.firmware | indent 4 }}
{{- /* If no raid is defined for a host, simply skip. There is no default setting for raid */ -}}
{{- /* Reference for RAID: https://github.com/metal3-io/metal3-docs/pull/134 */ -}}
{{- end }}
{{- if $hardwareProfile.raid }}
raid:
{{ toYaml $hardwareProfile.raid | indent 4 }}
{{- end }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ $hostName }}-bmc-secret
data:
username: {{ $host.bmcUsername | b64enc }}
password: {{ $host.bmcPassword | b64enc }}
type: Opaque
---
apiVersion: v1
kind: Secret
metadata:
name: {{ $hostName }}-network-data
stringData:
networkData: |
links:
{{- range $envAll.commonNetworking.links }}
-
{{ toYaml . | indent 6 }}
{{- if $host.macAddresses }}
{{- if index $host.macAddresses .id }}
ethernet_mac_address: {{ index $host.macAddresses .id }}
{{- end }}
{{- end }}
{{- end }}
networks:
{{- range $envAll.commonNetworking.networks }}
-
{{ toYaml . | indent 6 }}
ip_address: {{ index $host.ipAddresses .id }}
{{- end }}
services:
{{ toYaml $envAll.commonNetworking.services | indent 6 }}
type: Opaque
{{ end -}}