Infrastructure as Code with OpenNebula
This session explores how OpenNebula integrates with Terraform to enable Infrastructure as Code (IaC) practices for managing virtualized environments. Victor Palma from OpenNebula introduces the OpenNebula Terraform provider, which uses the Go OpenNebula Cloud API library to communicate with OpenNebula's core through the XMLRPC API. The provider supports a comprehensive range of resources including hosts, datastores, VMs, templates, users, groups, marketplaces, networks, virtual routers, and cluster provisioning. Key use cases include environment parity across development, testing, and production stages, on-demand resource allocation for handling variable loads, automated testing with CI/CD integration, and rapid sandbox environment creation for experimentation. The session demonstrates practical configuration examples, including provider setup with endpoint credentials and resource definitions for KVM hosts and virtual machines with specific CPU, memory, and tagging configurations.
Proton's Production Implementation
Dan Cazacu, Senior Site Reliability Engineer at Proton, presents a real-world case study of automating VM deployments at scale. Proton selected OpenNebula for three primary reasons: efficient storage allocation using customizable storage drivers that enabled migration from NAS to local storage, automatic VM deployment capabilities through the Terraform provider, and cost-effective Apache 2.0 licensing. Their automation stack combines Terraform with Terragrunt for code reusability and concurrent deployments, Atlantis for automated pull request processing, GitLab for access control and self-service capabilities, and NetBox as a centralized source of truth for network infrastructure. The architecture enables developers to independently provision VMs through merge requests that trigger automated workflows, with the entire deployment process completing in under 30 seconds. Proton's implementation uses over 50 configurable variables in their in-house Terragrunt modules, allowing precise control over cluster selection, CPU models, datastores, image names, and host configurations while maintaining infrastructure as code principles across their multi-site deployment.