diff --git a/deploy/crds/vms-crd.yaml b/deploy/crds/vms-crd.yaml index 7e321da..9de714b 100644 --- a/deploy/crds/vms-crd.yaml +++ b/deploy/crds/vms-crd.yaml @@ -965,6 +965,21 @@ spec: additionalProperties: type: string nullable: true + cloudInit: + type: object + description: >- + Provides data for generating a cloud-init ISO + image that is attached to the VM. + properties: + metaData: + description: Copied to cloud-init's meta-data file. + type: object + additionalProperties: + type: string + userData: + description: Copied to cloud-init's user-data file. + type: object + x-kubernetes-preserve-unknown-fields: true vm: type: object description: Defines the VM. diff --git a/dev-example/.gitignore b/dev-example/.gitignore new file mode 100644 index 0000000..925478d --- /dev/null +++ b/dev-example/.gitignore @@ -0,0 +1 @@ +/test-vm-ci.yaml diff --git a/dev-example/test-vm-shell.yaml b/dev-example/test-vm-shell.yaml new file mode 100644 index 0000000..8137694 --- /dev/null +++ b/dev-example/test-vm-shell.yaml @@ -0,0 +1,30 @@ +kind: Pod +apiVersion: v1 +metadata: + name: test-vm-shell + namespace: vmop-dev +spec: + volumes: + - name: test-vm-system-disk + persistentVolumeClaim: + claimName: system-disk-test-vm-0 + - name: vmop-image-repository + persistentVolumeClaim: + claimName: vmop-image-repository + containers: + - name: test-vm-shell + image: archlinux/archlinux + args: + - bash + imagePullPolicy: Always + stdin: true + stdinOnce: true + tty: true + volumeDevices: + - name: test-vm-system-disk + devicePath: /dev/test-vm-system-disk + volumeMounts: + - name: vmop-image-repository + mountPath: /var/local/vmop-image-repository + securityContext: + privileged: true diff --git a/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerConfig.ftl.yaml b/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerConfig.ftl.yaml index d49e705..64c5cbf 100644 --- a/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerConfig.ftl.yaml +++ b/org.jdrupes.vmoperator.manager/resources/org/jdrupes/vmoperator/manager/runnerConfig.ftl.yaml @@ -44,7 +44,22 @@ data: <#if cr.spec.runnerTemplate?? && cr.spec.runnerTemplate.update?? > updateTemplate: ${ cr.spec.runnerTemplate.update.asBoolean?c } - + + # Forward the cloud-init data if provided + <#if cr.spec.cloudInit??> + cloudInit: + <#if cr.spec.cloudInit.metaData??> + metaData: ${ cr.spec.cloudInit.metaData.toString() } + <#else> + metaData: {} + + <#if cr.spec.cloudInit.userData??> + userData: ${ cr.spec.cloudInit.userData.toString() } + <#else> + userData: {} + + + # Define the VM (required) vm: # The VM's name (required)