azure_stack
Build and run hybrid apps across datacenters, edge locations, remote offices, and the cloud.
total services: 4
total resources: 51
source project: stackql-provider-azure
See also:
[SHOW] [DESCRIBE] [REGISTRY]
Installation​
To pull the latest version of the azure_stack provider, run the following command:
REGISTRY PULL azure_stack;
To view previous provider versions or to pull a specific provider version, see here.
Authentication​
StackQL uses Azure application credentials obtained using the az login command from the Azure SDK. For more information, see here.
Authenticating using an Azure Service Principal​
To authenticate using an Azure Service Principal, set the following environment variables: AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET, see creating-an-azure-service-principal.
Example Queries​
Try the following queries using stackql shell, or run them from a script or CI pipeline with stackql exec.
Azure Local clusters​
Every Azure Local (Azure Stack HCI) cluster in the subscription with its connection state, billing model, running cluster version, node count and Software Assurance status:
SELECT name, location, status, connectivity_status, billing_model,
json_extract(reported_properties, '$.clusterVersion') AS cluster_version,
json_array_length(reported_properties, '$.nodes') AS node_count,
json_extract(software_assurance_properties, '$.softwareAssuranceStatus') AS software_assurance,
last_sync_timestamp, provisioning_state
FROM azure_stack.azure_stack_hci.clusters
WHERE subscription_id = '{{ subscription_id }}'
ORDER BY location, name;
Logical networks for Arc VMs​
Logical networks across the subscription with the custom location and virtual switch each one is bound to:
SELECT name, location, vm_switch_name, network_type,
json_extract(extended_location, '$.name') AS custom_location,
json_array_length(subnets) AS subnet_count,
provisioning_state
FROM azure_stack.azure_stack_hci_vm.logical_networks
WHERE subscription_id = '{{ subscription_id }}'
ORDER BY name;
Arc VM instance on an Azure Local machine​
The VM instance is addressed by resource_uri, the ARM id of its Arc machine (.../providers/Microsoft.HybridCompute/machines/<name>); size, memory, power state and host node in one row:
SELECT name, vm_id, host_node_name,
json_extract(status, '$.powerState') AS power_state,
json_extract(hardware_profile, '$.vmSize') AS vm_size,
json_extract(hardware_profile, '$.processors') AS processors,
json_extract(hardware_profile, '$.memoryMB') AS memory_mb,
json_extract(os_profile, '$.computerName') AS computer_name,
json_extract(storage_profile, '$.osDisk.osType') AS os_type,
provisioning_state
FROM azure_stack.azure_stack_hci_vm.virtual_machine_instances
WHERE resource_uri = '{{ resource_uri }}';
Update health for a cluster​
The update summary reports the running solution version and health, and the updates list shows each update known to the cluster with its state and whether it needs a reboot:
SELECT current_version, current_oem_version, current_sbe_version,
hardware_model, oem_family, health_state, state, last_updated, last_checked
FROM azure_stack.azure_stack_hci.update_summaries
WHERE cluster_name = '{{ cluster_name }}'
AND resource_group_name = '{{ resource_group_name }}'
AND subscription_id = '{{ subscription_id }}';
SELECT display_name, version, state, availability_type, package_type,
reboot_required, health_state, installed_date
FROM azure_stack.azure_stack_hci.updates
WHERE cluster_name = '{{ cluster_name }}'
AND resource_group_name = '{{ resource_group_name }}'
AND subscription_id = '{{ subscription_id }}'
ORDER BY version;
Azure Stack Hub registrations​
Azure Stack Hub registrations in the subscription with their billing model and cloud id:
SELECT name, location, billing_model, cloud_id, object_id
FROM azure_stack.azure_stack.registrations
WHERE subscription_id = '{{ subscription_id }}';
Marketplace products syndicated to a registration​
Downloadable Marketplace products for one Azure Stack Hub registration, counted by publisher and product kind (the azure_stack service names the resource group parameter resource_group):
SELECT publisher_display_name, product_kind, COUNT(*) AS products
FROM azure_stack.azure_stack.products
WHERE registration_name = '{{ registration_name }}'
AND resource_group = '{{ resource_group }}'
AND subscription_id = '{{ subscription_id }}'
GROUP BY publisher_display_name, product_kind
ORDER BY products DESC;
Cluster resource provisioning​
Registering a cluster starts with the Azure Local cluster resource in Azure; create it with a system-assigned identity, then remove it:
INSERT INTO azure_stack.azure_stack_hci.clusters (
cluster_name, resource_group_name, subscription_id, location, identity, tags
)
SELECT 'hci-cluster-01', '{{ resource_group_name }}', '{{ subscription_id }}', 'eastus',
'{"type": "SystemAssigned"}',
'{"environment": "lab"}';
DELETE FROM azure_stack.azure_stack_hci.clusters
WHERE cluster_name = 'hci-cluster-01'
AND resource_group_name = '{{ resource_group_name }}'
AND subscription_id = '{{ subscription_id }}';