Skip to content

Comments

Add IBM Cloud infrastructure support#335

Open
sayalibhavsar wants to merge 3 commits intomainfrom
test_upload_fix1
Open

Add IBM Cloud infrastructure support#335
sayalibhavsar wants to merge 3 commits intomainfrom
test_upload_fix1

Conversation

@sayalibhavsar
Copy link
Contributor

Description

This PR adds automated IBM Cloud VSI provisioning with Terraform, including VPC networking, security, floating IPs, and new Ansible roles with burden script integration.

Key capabilities added:

  • Automated IBM Cloud infrastructure provisioning via Terraform
  • Support for running multiple instance types in parallel without naming conflicts
  • VPC creation with optional reuse of existing VPCs
  • Automated SSH key detection and validation
  • Resource cleanup utility for systematic deletion of IBM Cloud resources
  • Error handling for failed provisioning and terraform state issues

Before/After Comparison

IBM Cloud Not Supported, No Parallel Multi-Instance Support, Manual Resource Management:

Documentation Check

Clerical Stuff

This closes #310

Relates to JIRA: RPOPC-677

@sayalibhavsar sayalibhavsar self-assigned this Dec 2, 2025
@sayalibhavsar sayalibhavsar marked this pull request as ready for review January 10, 2026 08:03
@sayalibhavsar
Copy link
Contributor Author

New Ansible Roles

  • ibm_create - Basic IBM Cloud VSI provisioning with VPC networking
  • ibm_vpc_create - Advanced IBM VPC provisioning with disk and network management

Infrastructure as Code

  • Terraform configurations for IBM Cloud provider (~1.70)
  • VPC creation with optional reuse of existing VPCs
  • Subnet management (public and private)
  • Security group rules (all inbound/outbound for testing)
  • Floating IP allocation for public access
  • SSH key integration with IBM Cloud
  • Multi-network interface support
  • Data volume creation and attachment
  • Pbench benchmark volume support

Core Script Updates (bin/burden)

  • Added ibm to valid system types
  • ibm_image_lookup() - Query available OS images from IBM Cloud
  • ibm_specific_os_version() - Handle IBM Cloud image IDs
  • IBM Cloud region/zone defaults (us-south with zones 1-3)
  • Default test user set to root for IBM instances
  • Bug fix: user_parent_home_dir logic moved after user determination (handles /root vs /home/root)

Automation Playbook Updates (bin/ten_of_us.yml)

  • IBM instance creation workflow integration
  • CodeReady Builder repository enablement for IBM RHEL instances
  • IBM Cloud cleanup/teardown in terraform delete logic

Authentication & Validation

  • API key requirement validation (IC_API_KEY or IBMCLOUD_API_KEY)
  • SSH key auto-detection (prioritizes "zathras" keys, then username keys)
  • Resource group ID retrieval from IBM Cloud CLI
  • Error messages with setup instructions

Configuration Templates

  • Package dependencies added to all 11 test templates:
    • coremark, coremark_pro
    • fio, iozone
    • passmark, phoronix
    • pig, pyperformance
    • speccpu2017, specjbb
    • uperf
  • RHEL, Ubuntu, and Amazon Linux package lists

Documentation

  • Comprehensive 304-line README for IBM Cloud integration
  • Prerequisites and setup instructions
  • Usage examples with different configurations
  • Troubleshooting guide
  • IBM Cloud-specific limitations documented

Key Capabilities

  • Automated infrastructure provisioning via Terraform
  • Parallel multi-instance support without naming conflicts
  • Multiple network interfaces for network performance tests
  • Storage volume attachment for disk I/O benchmarks
  • Region/zone selection and defaults
  • Resource cleanup utilities
  • Error handling for failed provisioning
  • Metadata recording for test results

Files Added (38 new files)

  • 1 README
  • 18 Terraform configuration files (.tf)
  • 13 Ansible task files (.yml)
  • 3 Jinja2 templates (.j2)
  • 1 vars file
  • 2 modified core scripts

Files Modified (14 existing files)

  • bin/burden (main CLI script)
  • bin/ten_of_us.yml (main playbook)
  • 11 test configuration templates
  • 1 duplicate exec_dir line in specjbb_template.yml (line 2284)
    The implementation follows the same patterns as existing AWS/Azure/GCP providers, ensuring consistency across the codebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add IBM Cloud VSI and Bare Metal Provisioning Support to Zathras Framework

1 participant