This page contains Windows bias

About This Page

This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.

Bias Analysis

Bias Types:
⚠️ powershell_heavy
⚠️ windows_first
⚠️ missing_linux_example
Summary:
The documentation provides only a PowerShell script for deploying Arc-enabled ContainerApps, with no equivalent Bash or Linux shell example. All scripting and automation guidance is Windows-centric, assuming the user is running PowerShell. There is no mention of how to perform these steps on Linux or macOS, nor are cross-platform scripting patterns (such as Bash) provided.
Recommendations:
  • Provide a Bash (Linux/macOS) equivalent script for all PowerShell examples, ensuring parity in automation guidance.
  • Explicitly mention that the Azure CLI commands work cross-platform, and show how to run them in Bash or sh environments.
  • Where possible, use cross-platform scripting patterns (e.g., Bash, Python, or plain Azure CLI commands) in examples, or provide both PowerShell and Bash versions side-by-side.
  • Add notes or callouts clarifying any OS-specific requirements or differences.
  • Ensure that clean-up and resource management examples are shown in both PowerShell and Bash formats.
GitHub Create pull request

Scan History

Date Scan ID Status Bias Status
2025-07-12 23:44 #41 in_progress ❌ Biased
2025-07-12 00:58 #8 cancelled ✅ Clean
2025-07-10 05:06 #7 processing ✅ Clean

Flagged Code Snippets

# . "./CreateArcEnabledAksOnEZ.ps1" # Create a container app on an AKS cluster in an edge zone and connect it to Azure Arc-enabled Kubernetes function CreateContainerAppOnArcEnabledAksEz { param( [string] $AKSClusterResourceGroupName, [string] $location = "westus", [string] $AKSName, [string] $edgeZone, [int] $nodeCount = 2, [string] $vmSize = "standard_nv12ads_a10_v5", [string] $ArcResourceGroupName, [string] $CONNECTED_ENVIRONMENT_NAME, [string] $CUSTOM_LOCATION_NAME, [string] $SubscriptionId, [string] $ACRName, [string] $imageName, [switch] $Debug ) try { # Set the subscription az account set --subscription $SubscriptionId # Create the Arc-enabled EZ AKS cluster createArcEnabledAksOnEz -SubscriptionId $SubscriptionId -AKSClusterResourceGroupName $AKSClusterResourceGroupName -location $location -AKSName $AKSName -edgeZone $edgeZone -nodeCount $nodeCount -vmSize $vmSize -ArcResourceGroupName $ArcResourceGroupName -Debug:$Debug # Install container apps extension $CLUSTER_NAME = "$ArcResourceGroupName-cluster" # Name of the connected cluster resource $EXTENSION_NAME="appenv-ext" $NAMESPACE="app-ns" az k8s-extension create ` --resource-group $ArcResourceGroupName ` --name $EXTENSION_NAME ` --cluster-type connectedClusters ` --cluster-name $CLUSTER_NAME ` --extension-type 'Microsoft.App.Environment' ` --release-train stable ` --auto-upgrade-minor-version true ` --scope cluster ` --release-namespace $NAMESPACE ` --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" ` --configuration-settings "appsNamespace=${NAMESPACE}" ` --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" ` --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKSClusterResourceGroupName}" # Save id property of the Container Apps extension for later $EXTENSION_ID=$(az k8s-extension show ` --cluster-type connectedClusters ` --cluster-name $CLUSTER_NAME ` --resource-group $ArcResourceGroupName ` --name $EXTENSION_NAME ` --query id ` --output tsv) # Wait for extension to fully install before proceeding az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview" $CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $ArcResourceGroupName --name $CLUSTER_NAME --query id --output tsv) az customlocation create ` --resource-group $ArcResourceGroupName ` --name $CUSTOM_LOCATION_NAME ` --host-resource-id $CONNECTED_CLUSTER_ID ` --namespace $NAMESPACE ` --cluster-extension-ids $EXTENSION_ID # DEBUG: Test custom location creation if ($Debug) { Write-Debug az customlocation show --resource-group $ArcResourceGroupName --name $CUSTOM_LOCATION_NAME } # Save id property of the custom location for later $CUSTOM_LOCATION_ID=$(az customlocation show ` --resource-group $ArcResourceGroupName ` --name $CUSTOM_LOCATION_NAME ` --query id ` --output tsv) # Create container Apps connected environment az containerapp connected-env create ` --resource-group $ArcResourceGroupName ` --name $CONNECTED_ENVIRONMENT_NAME ` --custom-location $CUSTOM_LOCATION_ID ` --location eastus # DEBUG: validate that the connected environment is successfully created if ($Debug) { Write-Debug az containerapp connected-env show --resource-group $ArcResourceGroupName --name $CONNECTED_ENVIRONMENT_NAME } # Create a new resource group for the container app $myResourceGroup="${imageName}-resource-group" az group create --name $myResourceGroup --location eastus # Get the custom location id $customLocationId=$(az customlocation show --resource-group $ArcResourceGroupName --name $CUSTOM_LOCATION_NAME --query id --output tsv) # Get info about the connected environment $myContainerApp="${imageName}-container-app" $myConnectedEnvironment=$(az containerapp connected-env list --custom-location $customLocationId -o tsv --query '[].id') # create acr and group az group create --name $ArcResourceGroupName --location eastus az acr create --resource-group $ArcResourceGroupName --name $ACRName --sku Basic # Wait for the ACR to be created Start-Sleep -Seconds 10 # login to acr and get login server az acr login --name $ACRName $ACRLoginServer = $(az acr show --name $ACRName --query loginServer --output tsv) # DEBUG: Test ACR login if ($Debug) { Write-Debug az acr show --name $ACRName Write-Debug az acr repository list --name $ACRName --output table } # Build and push docker image cd .\DemoApp docker build -t ${imageName} . docker tag ${imageName} ${ACRLoginServer}/${imageName}:latest docker push ${ACRLoginServer}/${imageName}:latest cd .. # Enable admin user in ACR and get password az acr update -n $ACRName --admin-enabled true $password = $(az acr credential show --name ${ACRName} --query passwords[0].value --output tsv) # Create container app az containerapp create ` --resource-group $myResourceGroup ` --name $myContainerApp ` --environment $myConnectedEnvironment ` --environment-type connected ` --registry-server ${ACRLoginServer} ` --registry-username ${ACRName} ` --registry-password $password ` --image "${ACRLoginServer}/${imageName}:latest" ` --target-port 80 ` --ingress 'external' ` # Open the container app in a browser az containerapp browse --resource-group $myResourceGroup --name $myContainerApp } catch { # Catch any error Write-Error "An error occurred" Write-Error $Error[0] } } CreateContainerAppOnArcEnabledAksEz -AKSClusterResourceGroupName "my-aks-cluster-group" ` -location "westus" ` -AKSName "my-aks-cluster"` -edgeZone "losangeles" ` -nodeCount 2 ` -vmSize "standard_nv12ads_a10_v5" ` -ArcResourceGroupName "myArcResourceGroup" ` -CONNECTED_ENVIRONMENT_NAME "myConnectedEnvironment" ` -CUSTOM_LOCATION_NAME "myCustomLocation" ` -SubscriptionId "<your subscription>"` -ACRName "containerappezacr" ` -imageName "myimage"