Cloud and Infrastructure Management
Relevant source files
The following files were used as context for generating this wiki page:
ManageIQ is an open-source Management Platform designed to manage hybrid IT environments, including containers, virtual machines, networks, and storage from a single interface. It provides four primary feature sets: Insight (monitoring and analytics), Control (security and compliance), Automate (provisioning and orchestration), and Integrate (systems management and web services).
Sources: README.md:20-30
The platform utilizes a provider-based architecture where External Management Systems (EMS) represent specific cloud or infrastructure vendors. These providers are categorized into types such as EmsCloud (e.g., Amazon EC2) and EmsInfra (e.g., VMware vSphere), allowing for unified management of diverse resources through specialized managers for compute, network, and storage.
Sources: spec/models/ext_management_system_spec.rb:49-80, app/models/manageiq/providers/network_manager.rb:4-10
External Management Systems (EMS)
The core of the management layer is the ExtManagementSystem class and its subclasses. It acts as the primary interface for discovery, monitoring, and task execution against external providers.
Provider Hierarchy and Types
The system distinguishes between different management domains:
- Cloud Managers: Manage instances, flavors, and cloud-native resources.
- Infrastructure Managers: Manage virtual machines, hosts, and clusters.
- Network Managers: Manage floating IPs, security groups, and cloud networks.
- Storage Managers: Manage block and object storage.
Sources: spec/models/ext_management_system_spec.rb:50-100, app/models/manageiq/providers/network_manager.rb:14-36
EMS Lifecycle and Operations
Operations such as refreshing inventory, creating resources, and destroying providers are handled through a queued architecture to ensure system stability.
Cloud Tenancy and Resource Mapping
CloudTenant objects represent logical groupings of resources within a cloud provider. ManageIQ supports mapping these external tenants to internal Tenant objects for policy and chargeback purposes.
Tenant Mapping Logic
When cloud_tenant_mapping is supported, the system synchronizes the provider's tenant hierarchy with the internal ManageIQ tenant structure. This allows for automatic assignment of VMs and templates to the correct organizational units.
Sources: app/models/cloud_tenant.rb:123-146, spec/models/manageiq/providers/cloud_manager_spec.rb:22-60
Resource Associations
A CloudTenant serves as a container for various cloud resources:
| Resource Type | Description |
|---|---|
vms | Active instances within the tenant. |
security_groups | Network security rules applied to resources. |
cloud_networks | Networks and subnets available for provisioning. |
cloud_resource_quotas | Limits on CPU, memory, and storage usage. |
flavors | Hardware configurations supported by the tenant. |
Sources: app/models/cloud_tenant.rb:12-30
Provisioning Workflows
Provisioning in ManageIQ is handled by workflow classes that manage the user interaction and data collection required to deploy new virtual machines or instances.
Workflow Architecture
The MiqProvisionVirtWorkflow class serves as the base for virtualization provisioning, while ManageIQ::Providers::CloudManager::ProvisionWorkflow provides cloud-specific overrides.
Customization and Templates
Workflows support various customization methods during provisioning:
- Cloud-Init: Supported via
CloudInitTemplateMixinfor cloud providers. - Sysprep: Supported for Windows-based infrastructure provisioning.
- Customization Specs: Pre-defined templates stored in the EMS (e.g., VMware Customization Specifications).
Sources: app/models/manageiq/providers/cloud_manager/provision_workflow.rb:75-98, app/models/miq_provision_virt_workflow.rb:304-330
Network Management
Network Managers are responsible for the lifecycle of connectivity resources. They often act as sub-managers to a parent_manager (Cloud Manager).
| Relationship | Description |
|---|---|
floating_ips | Publicly routable IP addresses. |
security_groups | Virtual firewalls for instances. |
cloud_networks | Isolated network segments. |
network_routers | Interfaces connecting different networks. |
load_balancers | Distribution points for network traffic. |
Sources: app/models/manageiq/providers/network_manager.rb:14-30
Placement and Filtering
During provisioning, the workflow dynamically filters network resources based on the selected provider, tenant, and availability zone. For example, allowed_cloud_subnets will only return subnets that match the selected cloud_network_id and availability_zone_id.
Sources: app/models/manageiq/providers/cloud_manager/provision_workflow.rb:17-40
Summary
ManageIQ Cloud and Infrastructure Management provides a unified abstraction layer over heterogeneous environments. By leveraging a structured provider model and automated workflows, it enables consistent discovery, resource mapping via cloud tenants, and complex provisioning across multiple platforms.
Sources: README.md:20-25, app/models/miq_provision_virt_workflow.rb:60-70