Sad Tux - Windows bias detected
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

Detected Bias Types
windows_first
missing_linux_example
windows_tools
Summary
The documentation demonstrates a Windows-first bias by exclusively deploying the simulation and edge infrastructure on a Windows 11 Enterprise VM, instructing users to use RDP, Windows command prompt, and Windows Subsystem for Linux (WSL) to access Linux tools. There are no instructions or examples for deploying or running the solution natively on Linux hosts, nor for using Linux-native tools or environments. The documentation assumes a Windows-centric workflow, with Linux capabilities only available via WSL, and omits guidance for users who may want to use Linux VMs or physical machines directly.
Recommendations
  • Provide parallel instructions for deploying the simulation and edge infrastructure on a native Linux VM (e.g., Ubuntu, CentOS) in Azure, including SSH access and Linux-native command-line usage.
  • Include Linux-native installation steps for K3S and the simulation, without requiring WSL or Windows command prompt.
  • Offer guidance for users who wish to use Docker and Kubernetes directly on Linux, including any necessary prerequisites and troubleshooting tips.
  • Clarify which steps are platform-agnostic and which are Windows-specific, and ensure Linux users are not required to use Windows tools or environments.
  • Where possible, present Linux and Windows instructions side by side, or clearly indicate both options, to ensure parity and inclusivity for cross-platform users.
GitHub Create Pull Request

Scan History

Date Scan Status Result
2026-01-14 00:00 #250 in_progress Biased Biased
2026-01-13 00:00 #246 completed Biased Biased
2026-01-11 00:00 #240 completed Biased Biased
2026-01-10 00:00 #237 completed Biased Biased
2026-01-09 00:34 #234 completed Biased Biased
2026-01-08 00:53 #231 completed Biased Biased
2026-01-06 18:15 #225 cancelled Clean Clean
2025-08-17 00:01 #83 cancelled Clean Clean
2025-07-13 21:37 #48 completed Clean Clean
2025-07-12 23:44 #41 cancelled Biased Biased
2025-07-09 13:09 #3 cancelled Clean Clean
2025-07-08 04:23 #2 cancelled Biased Biased

Flagged Code Snippets

To view a graphical representation of an OPC UA Information Model, you can use the [Kusto Explorer tool](/azure/data-explorer/kusto/tools/kusto-explorer). To render station model, run the following query in Kusto Explorer. For best results, change the `Layout` option to `Grouped` and the `Labels` to `name`:

When the command finishes, reboot your VM and sign in again. A command prompt finishes the WSL installation and you're prompted to enter a new username and password for WSL. Then, in WSL, use the following command to install K3S, a lightweight Kubernetes runtime:

Your VM is now ready to run the production line simulation.

## Run the production line simulation

In the VM, open a Windows command prompt, enter *wsl*, and press **Enter**. Navigate to the `/mnt/c/ManufacturingOntologies-main/Tools/FactorySimulation` directory and run the **StartSimulation** shell script:

`<Your Event Hubs connection string>` is your Event Hubs namespace connection string. To learn more, see [Get an Event Hubs connection string](/azure/event-hubs/event-hubs-get-connection-string). A connection string looks like: `Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh=`

> [!NOTE]
> If the external IP address for a Kubernetes service shows as `<pending>`, use the following command to assign the external IP address of the `traefik` service: `sudo kubectl patch service <theService> -n <the service's namespace> -p '{"spec": {"type": "LoadBalancer", "externalIPs":["<the traefik external IP address>"]}}'`.

> [!TIP]
> To prevent WSL and K3s from automatically shutting down, keep your WSL command prompt open.

## UA Cloud Library

To read OPC UA Information Models directly from Azure Data Explorer, you can import the OPC UA nodes defined in an OPC UA Information Model into a table. You can use the imported information for lookup of more metadata within queries.

First, configure an Azure Data Explorer callout policy for the UA Cloud Library by running the following query on your Azure Data Explorer cluster. Before you start, make sure you're a member of the **AllDatabasesAdmin** role in the cluster, which you can configure in the Azure portal by navigating to the **Permissions** page for your Azure Data Explorer cluster.

1. Select **Set as alert condition**.

1. Scroll down to the **Expressions** section. Delete the **Reduce** expression, you don't need it.

1. For the alert threshold, select **A** as **Input**. Select **IS BELOW** and enter **10**.

1. Scroll down to the **Set evaluation behavior** section. Create a new **Folder** to save your alerts. Create a new **Evaluation group** and specify **2m**.

1. Select the **Save rule and exit** button in the top right.

In the overview of your alerts, you can now see that an alert is triggered when your OEE is less than 10.

## Connect the reference solution to Microsoft Power BI

To connect the reference solution Power BI, you need access to a Power BI subscription.

To create the Power BI dashboard, complete the following steps:

1. Install the [Power BI desktop app](https://go.microsoft.com/fwlink/?LinkId=2240819&clcid=0x409).

1. Sign in to the Power BI desktop app using the user with access to the Power BI subscription.

1. In the Azure portal, navigate to your Azure Data Explorer database called ontologies and add **Database Admin** permissions to a Microsoft Entra ID user with access to only the subscription used for your deployed instance of this reference solution. If necessary, create a new user in Microsoft Entra ID.

1. From Power BI, create a new report and select Azure Data Explorer time-series data as a data source: **Get data > Azure > Azure Data Explorer (Kusto)**.

1. In the popup window, enter the Azure Data Explorer endpoint of your cluster (`https://<your cluster name>.<location>.kusto.windows.net`), the database name (`ontologies`), and the following query: