Metal3 Continuous Integration

The Metal3 Continuous Integration job, named metal3-integration in the zuul configuration file, deploys a kubernetes cluster on emulated bare metal nodes, helping tests the ironic source code using the Metal3 Development Environment (metal3-dev-env) workflow from the Metal3 project.

Job configuration

While the metal3-integration job definition yaml file is in the same path of the other Ironic CI jobs, it uses separate configuration files under playbooks/metal3-ci in the Ironic repository. The configuration follows ansible syntax as for other CI jobs. The actual job is configured in run.yaml, where various environment variables for metal3-dev-env are defined under the metal3_environment entry. For more info about the metal3-dev-env environment variables definition and values please see the metal3-dev-env env variables page. In post.yaml we execute some post execution operations, like collecting logs and environment configuration, that are useful in case of troubleshooting.

Metal3 Development Environment Guide

To familiarize with the Metal3 Development Environment (metal3-dev-env), the Metal3 workflow, and in general with the project, it’s recommended to follow the TryIt section of the Metal3 User Guide. The metal3-dev-env workflow steps are explained in Section 1.2.

The Metal3 Development Environment (metal3-dev-env) is maintained by the Metal3 project community which is present in the #cluster-api-baremetal channel on Kubernetes Slack. For any questions or help on the project, or to escalate issues related to the metal3-integration job please contact the Metal3 community.

Troubleshooting Guide

The metal3-integration job logs are stored in the same way and following roughly the same path of the other Ironic CI jobs. In the main directory the job-output.txt file contains the console output of the job and, if any failure exists, the main reason of the breakage. Other useful logs are stored under the controller directory:

  • before_pivoting directory stores services logs of the management cluster

  • libvirt directory stores libvirt configuration and logs, including console logs of the emulated bare metal nodes

  • management_cluster directory stores all configuration and logs of the metal3 services, such as the baremetal-operator (BMO)

  • system directory stores information and logs from the operating system where metal3-dev-env is running