Goal
Manage provider resources without bypassing StackShift ownership, idempotency, reconciliation, or deletion safety.Prerequisites
- A provisioned BYOCloud node
- A provider that supports the resource type you want to use
Workflow
1
Open the Cloud resources section on a BYOCloud node.
2
Refresh provider state and inspect placement, addressing, and tracked cloud resources for that node.
3
Create, inspect, detach, or safely delete provider-backed volumes where supported.
4
Create and review volume snapshots where the provider supports snapshots.
5
Allocate or release a stable public IP where supported, and use retry, reboot, or delete node actions when needed.
Current provider support
- AWS: EBS volumes, EBS volume snapshots, VPC/subnet/AZ metadata, Elastic IPs
- DigitalOcean: block storage volumes, volume snapshots, region/network metadata, Reserved IPs
- Hetzner: cloud volumes, location metadata, Floating IPs; attached-volume snapshots are intentionally unsupported
- Azure: managed disks, disk snapshots, resource-group/VNet/subnet metadata, static Public IPs
Node-scoped inventory and refresh
- Inventory records provider resource ID, region or placement, provider state, StackShift ownership, safe-to-delete state, last synchronization, and operation state.
- Refresh queries only the selected node and never triggers global reconciliation.
- Use refresh after a provider incident, quota change, or emergency provider-console action.
Volumes
- Create after the node is active with a name, positive size, mount path, and filesystem; the default filesystem is ext4.
- Hetzner volumes must be at least 10 GB.
- Detach preserves the provider volume and its snapshots.
- Delete is refused while dependent snapshots exist or the volume is not safe to delete.
Snapshots
- DigitalOcean, AWS, and Azure support volume snapshots; Hetzner attached-volume snapshots are not advertised.
- Wait for available before relying on a snapshot for recovery.
- Deleting a volume never silently deletes dependent snapshots.
Stable public IP and reboot
- Allocate one supported provider-native stable address and inspect provider ID, address, assignment, and last sync.
- A stable workload IP never exposes agent TCP 8443; agent access remains WireGuard-only.
- Reboot makes the node unschedulable until overlay, certificate, heartbeat, runtime, Node Guard, and Caddy recover.
Safe deletion saga
- Deletion returns 409 with structured blockers for projects, stacks, databases, volumes, and snapshots.
- After blockers are cleared, StackShift removes add-ons and networks in dependency order.
- The provider instance must be confirmed absent before identity revocation and node soft deletion.
- Provider failures remain persisted and retryable; resources are never marked deleted optimistically.
Terraform contract
- Resources: stackshift_byoc_provider_connection, stackshift_byoc_node, stackshift_byoc_volume, stackshift_byoc_snapshot, and stackshift_byoc_static_ip.
- Terraform derives mutation idempotency keys from immutable resource identity and persists them when omitted, so process recovery repeats the same provider request.
- Node, volume, snapshot, and stable-IP resources wait for provider-confirmed terminal state.
- Import volumes and snapshots with NODE_ID:RESOURCE_ID.
Expected result
Operators can provision and operate BYOCloud nodes and their supported provider-backed resources directly from StackShift.
Common failures
Related guides
BYOCloud overview
Provision nodes in your own cloud account with scoped or federated access, durable operations, signed enrollment, private agent networking, and provider-confirmed cleanup.
Connect a BYOCloud node
Configure scoped or federated cloud access, validate exact permissions, provision idempotently, and follow bootstrap through schedulable health.
Nodes view
Use the node-focused operations surface when you need to think about capacity, health, and runtime readiness across hosts.