×

Red Hat OpenShift Pipelines is a Kubernetes-native CI/CD framework that allows developers to design and run each step of the CI/CD pipeline in its own container.

The Scheduling, Scale, and Performance (SSP) Operator integrates OpenShift Virtualization with OpenShift Pipelines. The SSP Operator includes tasks and example pipelines that allow you to:

  • Create and manage virtual machines (VMs), persistent volume claims (PVCs), and data volumes

  • Run commands in VMs

  • Manipulate disk images with libguestfs tools

Prerequisites

  • You have access to an Red Hat OpenShift Service on AWS cluster with cluster-admin permissions.

  • You have installed the OpenShift CLI (oc).

  • You have installed OpenShift Pipelines.

Virtual machine tasks supported by the SSP Operator

The following table shows the tasks that are included as part of the SSP Operator.

Table 1. Virtual machine tasks supported by the SSP Operator
Task Description

create-vm-from-manifest

Create a virtual machine from a provided manifest or with virtctl.

create-vm-from-template

Create a virtual machine from a template.

copy-template

Copy a virtual machine template.

modify-vm-template

Modify a virtual machine template.

modify-data-object

Create or delete data volumes or data sources.

cleanup-vm

Run a script or a command in a virtual machine and stop or delete the virtual machine afterward.

disk-virt-customize

Use the virt-customize tool to run a customization script on a target PVC.

disk-virt-sysprep

Use the virt-sysprep tool to run a sysprep script on a target PVC.

wait-for-vmi-status

Wait for a specific status of a virtual machine instance and fail or succeed based on the status.

Virtual machine creation in pipelines now utilizes ClusterInstanceType and ClusterPreference instead of template-based tasks, which have been deprecated. The create-vm-from-template, copy-template, and modify-vm-template commands remain available but are not used in default pipeline tasks.

Windows EFI installer pipeline

You can run the Windows EFI installer pipeline by using the web console or CLI.

The Windows EFI installer pipeline installs Windows 10, Windows 11, or Windows Server 2022 into a new data volume from a Windows installation image (ISO file). A custom answer file is used to run the installation process.

The Windows EFI installer pipeline uses a config map file with sysprep predefined by Red Hat OpenShift Service on AWS and suitable for Microsoft ISO files. For ISO files pertaining to different Windows editions, it may be necessary to create a new config map file with a system-specific sysprep definition.

Running the example pipelines using the web console

You can run the example pipelines from the Pipelines menu in the web console.

Procedure
  1. Click PipelinesPipelines in the side menu.

  2. Select a pipeline to open the Pipeline details page.

  3. From the Actions list, select Start. The Start Pipeline dialog is displayed.

  4. Keep the default values for the parameters and then click Start to run the pipeline. The Details tab tracks the progress of each task and displays the pipeline status.

Running the example pipelines using the CLI

Use a PipelineRun resource to run the example pipelines. A PipelineRun object is the running instance of a pipeline. It instantiates a pipeline for execution with specific inputs, outputs, and execution parameters on a cluster. It also creates a TaskRun object for each task in the pipeline.

Procedure
  1. To run the Windows 10 installer pipeline, create the following PipelineRun manifest:

    apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    metadata:
      generateName: windows10-installer-run-
      labels:
        pipelinerun: windows10-installer-run
    spec:
      params:
      - name: winImageDownloadURL
        value: <link_to_windows_10_iso> (1)
      pipelineRef:
        name: windows10-installer
      taskRunSpecs:
        - pipelineTaskName: copy-template
          serviceAccountName: copy-template-task
        - pipelineTaskName: modify-vm-template
          serviceAccountName: modify-vm-template-task
        - pipelineTaskName: create-vm-from-template
          serviceAccountName: create-vm-from-template-task
        - pipelineTaskName: wait-for-vmi-status
          serviceAccountName: wait-for-vmi-status-task
        - pipelineTaskName: create-base-dv
          serviceAccountName: modify-data-object-task
        - pipelineTaskName: cleanup-vm
          serviceAccountName: cleanup-vm-task
      status: {}
    1 Specify the URL for the Windows 10 64-bit ISO file. The product language must be English (United States).
  2. Apply the PipelineRun manifest:

    $ oc apply -f windows10-installer-run.yaml
  3. To run the Windows 10 customize pipeline, create the following PipelineRun manifest:

    apiVersion: tekton.dev/v1beta1
    kind: PipelineRun
    metadata:
      generateName: windows10-customize-run-
      labels:
        pipelinerun: windows10-customize-run
    spec:
      params:
        - name: allowReplaceGoldenTemplate
          value: true
        - name: allowReplaceCustomizationTemplate
          value: true
      pipelineRef:
        name: windows10-customize
      taskRunSpecs:
        - pipelineTaskName: copy-template-customize
          serviceAccountName: copy-template-task
        - pipelineTaskName: modify-vm-template-customize
          serviceAccountName: modify-vm-template-task
        - pipelineTaskName: create-vm-from-template
          serviceAccountName: create-vm-from-template-task
        - pipelineTaskName: wait-for-vmi-status
          serviceAccountName: wait-for-vmi-status-task
        - pipelineTaskName: create-base-dv
          serviceAccountName: modify-data-object-task
        - pipelineTaskName: cleanup-vm
          serviceAccountName: cleanup-vm-task
        - pipelineTaskName: copy-template-golden
          serviceAccountName: copy-template-task
        - pipelineTaskName: modify-vm-template-golden
          serviceAccountName: modify-vm-template-task
    status: {}
  4. Apply the PipelineRun manifest:

    $ oc apply -f windows10-customize-run.yaml