Cloud resource management
This tutorial shows an example of cloud resource management schema, which provides a vendor-agnostic way to model cloud infrastructure across AWS, GCP, and Azure. You'll load sample cloud data and explore how Infrahub can serve as a unified inventory for multi-cloud environments.
Overview​
The cloud schema enables you to track:
- Cloud providers - AWS, GCP, Azure, or other cloud platforms
- Cloud accounts - AWS accounts, GCP projects, Azure subscriptions
- Regions and availability zones - Geographic locations and fault domains
- Virtual networks - VPCs (AWS), VPC networks (GCP), VNets (Azure)
- Subnets - Network segments within virtual networks
- Security groups - Network access control rules (Security Groups, Firewall Rules, NSGs)
- Compute instances - Virtual machines across all providers
- Network infrastructure - Internet gateways, NAT gateways, route tables, elastic IPs
- Network interfaces - ENIs, NICs attached to instances
This vendor-agnostic model allows you to manage multi-cloud infrastructure from a single source of truth, with consistent naming and relationships regardless of the underlying cloud provider.
Prerequisites​
Before starting this tutorial, ensure you have:
- Completed the installation guide and have Infrahub running
- Loaded the bootstrap data and schemas
- Access to the Infrahub web interface at
http://localhost:8000
Loading cloud demo data​
The demo includes sample data for all three major cloud providers with realistic infrastructure examples.
The easiest way to load the cloud demo is using the provided invoke task:
uv run invoke demo-cloud
This command:
- Creates a new branch named
demo-cloud - Loads all schemas (including the cloud schema)
- Loads cloud object files with sample data for AWS, GCP, and Azure
- Displays a URL to view the cloud resources
Exploring cloud resources​
After loading the demo data, navigate to the cloud resources in the Infrahub web interface.
Viewing all cloud resources​
- Ensure you're on the correct branch (for example,
demo-cloud) - Navigate to Cloud Resource in the left sidebar menu
- You'll see a list of all cloud resource types
Or access the cloud resources directly:
http://localhost:8000/objects/CloudResource?branch=demo-cloud
Sample data structure​
The demo includes a comprehensive multi-cloud environment:
Cloud providers (3)​
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- Microsoft Azure
Cloud accounts (12)​
Each provider has production, staging, and development accounts:
opsmill-aws-production,opsmill-aws-staging,opsmill-aws-devopsmill-gcp-production,opsmill-gcp-staging,opsmill-gcp-devopsmill-azure-production,opsmill-azure-staging,opsmill-azure-dev
Regions and availability zones​
- AWS: US East (N. Virginia), US West (Oregon), EU West (Ireland)
- GCP: US Central (Iowa), US East (South Carolina), Europe West (Belgium)
- Azure: East US, West US 2, West Europe
Each region includes 3 availability zones.
Virtual networks (12)​
VPCs and VNets across all accounts with various configurations:
- Production VPCs with public and private subnets
- Staging and development networks
- DNS support and hostname configuration
Compute instances (19)​
Various instance types across all providers:
- Web servers, application servers, database servers
- Linux and Windows instances
- Different instance sizes (t3.large, m5.xlarge, n1-standard-2, Standard_D2s_v3, etc.)
Network infrastructure​
- Internet gateways for public connectivity
- NAT gateways for private subnet outbound access
- Route tables for traffic routing
- Elastic/static IP addresses
- Network interfaces with security group associations
Schema architecture​
The cloud schema uses a hierarchical structure with clear relationships:
CloudProvider
└── CloudAccount
└── CloudVirtualNetwork
├── CloudSubnet
├── CloudSecurityGroup
├── CloudInternetGateway
└── CloudRouteTable
CloudRegion
└── CloudAvailabilityZone
└── CloudInstance
└── CloudNetworkInterface
Key relationships​
- CloudAccount belongs to a CloudProvider (parent relationship)
- CloudRegion is associated with a CloudProvider
- CloudAvailabilityZone belongs to a CloudRegion (parent relationship)
- CloudVirtualNetwork is associated with a CloudAccount and CloudRegion
- CloudSubnet belongs to a CloudVirtualNetwork (parent relationship)
- CloudInstance is associated with a CloudAccount, CloudAvailabilityZone, and CloudSubnet
- CloudSecurityGroup can be attached to CloudInstance and CloudNetworkInterface
Common attributes​
All cloud resources inherit from the CloudResource generic, providing:
name- Resource namedescription- Optional descriptioncloud_id- Provider-specific resource identifier (ARN, resource ID, etc.)status- Operational status (active, stopped, provisioning, terminating, error)tags- Optional tags for categorization
Use cases​
Multi-cloud inventory​
Use Infrahub as a single source of truth for all cloud resources:
- Track resources across AWS, GCP, and Azure in one place
- Maintain consistent naming conventions
- Link cloud resources to on-premises infrastructure
Security auditing​
Query security groups and their associations:
- Identify instances with specific security group configurations
- Audit network access rules across all clouds
- Track public IP assignments
Capacity planning​
Analyze compute resources across your cloud footprint:
- Count instances by type, region, or provider
- Track resource utilization patterns
- Plan for growth and optimization
Network documentation​
Document your cloud network architecture:
- Map virtual networks, subnets, and routing
- Track NAT and internet gateway configurations
- Document network interface assignments
Next steps​
For more information on Infrahub concepts, see:
- Understanding the concepts - Core Infrahub patterns
- Developer guide - Extending schemas and creating transforms