apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: create-vm-pipeline namespace: kubevirt spec: params: - description: Generate name prefix of the VM to create using imported ami name: vmName type: string - description: S3 bucket used to export ami file to KubeVirt name: s3Bucket type: string - description: Secret containing aws credentials with IAM role capable of reading contents from the s3 bucket name: s3ReadCredentialsSecret type: string - description: AWS Region name: awsRegion type: string - description: AMI ID to export name: amiId type: string - description: PVC storage class to use for imported AMI name: pvcStorageClass type: string - description: PVC Name to use for imported AMI name: pvcName type: string - description: PVC Namespace to use for imported AMI name: pvcNamespace type: string - description: Storage size required for pvc name: pvcSize type: string - description: PVC access mode name: pvcAccessMode type: string - description: Secret containing aws credentials with IAM role capable of copying AMI and exporting AMI to S3 name: awsCredentialsSecret type: string tasks: - name: import-ami taskRef: name: import-ami kind: ClusterTask params: - name: s3Bucket value: $(params.s3Bucket) - name: s3ReadCredentialsSecret value: $(params.s3ReadCredentialsSecret) - name: awsRegion value: $(params.awsRegion) - name: amiId value: $(params.amiId) - name: pvcStorageClass value: $(params.pvcStorageClass) - name: pvcName value: $(params.pvcName) - name: pvcNamespace value: $(params.pvcNamespace) - name: pvcSize value: $(params.pvcSize) - name: pvcAccessMode value: $(params.pvcAccessMode) - name: awsCredentialsSecret value: $(params.awsCredentialsSecret) - name: create-vm taskRef: name: create-vm-from-manifest kind: ClusterTask params: - name: manifest value: | apiVersion: kubevirt.io/v1alpha3 kind: VirtualMachine metadata: name: $(params.vmName) labels: kubevirt.io/vm: $(params.vmName) spec: dataVolumeTemplates: - metadata: name: $(params.vmName) spec: source: pvc: name: $(params.pvcName) nameSpace: $(params.pvcNamespace) pvc: accessModes: - ReadWriteOnce resources: requests: storage: $(params.pvcSize) running: true template: metadata: labels: kubevirt.io/vm: $(params.vmName) spec: domain: devices: disks: - disk: bus: virtio name: datavolumedisk1 resources: requests: memory: 2Gi terminationGracePeriodSeconds: 0 volumes: - dataVolume: name: $(params.vmName) name: datavolumedisk1