Skip to content

Mubadala

Customer Name Mubadala
Status Live
Onboarded Date 01 Apr 2025
SF Number 103776https://rhapsody.lightning.force.com/lightning/r/Account/0018Z00002Xdc0QQAR/view
Environments Dev, Test and Prod
Networking (VPN, ExpressRoute or Vnet Peering) M42 Provisioned
Technical Contact Ashish Shinde - ashinde@m42.aeVenkateswaran Ramanathan - vramanathan@m42.ae

Customer Details

Mubadala are a customer operating under the M42 owned tenant.
They were introduced by Digitiza and are part of our reseller agreement within the UAE.

In this environment “Rhapsody” do not have any control over networking, such as VPNs, ExpressRoute etc.

Configurations

American Hospital have the following environments configured.

Environment Size Disk Capacity Access Point Rhapsody Version
Devvmss-m42-RhapsodyServices-uaen-dev Medium 2Tb 10.13.39.102 7.5.1
Testvmss-m42-RhapsodyServices-uaen-test Medium 1Tb 10.13.39.103 7.5.1
Prodvmss-m42-RhapsodyServices-uaen-prod Large 3Tb 10.13.39.69 7.5.1

Cases

Knowledge Sharing

This customer was originally deployed using Terraform, however over the past 6/8 months there has been significant drift which has caused the team to rethink the management of this environment.

Terraform will not be in play when managing the infrastructure, instead we will manually need to configure and update resources directly from the portal.
We will still use Ansible runners to manage specific attributes, such as status checks, service restarts, password resets etc.

Each environment is managed as such.

Production

The production environment pulls its pre-built image from the following location.

Compute Gallery: ImageGalleryProd

VM image definition: SnowflakeImagesProd

Versions: 1.0.0 (latest version)

The above image was cut from the prod running instance on 21 Jan 2026
This means that if the server is rebuilt from a failure more than 6 months from this date, it is likely the image may need to be updated with the latest patches.

The user-data bootstrapping script has been modified from its original incarnation to a stand alone model.

#!/bin/bash
set -e

# --- Configuration ---
DISK_NAME="disk-m42-RhapsodyServices-uaen-prod-ASGDEV-2"

# --- 1. Identity & Discovery ---
# Get the current VM's Resource Group and Name from Azure Instance Metadata Service (IMDS)
MY_RG=$(curl -s -H Metadata:true "http://169.254.169.254/metadata/instance/compute/resourceGroupName?api-version=2021-02-01&format=text")
MY_VM_NAME=$(curl -s -H Metadata:true "http://169.254.169.254/metadata/instance/compute/name?api-version=2021-02-01&format=text")

# Log in using the VM's Managed Identity
az login --identity

# --- 2. Attach the Disk ---
echo "Attaching disk: $DISK_NAME..."
az vm disk attach \
  --resource-group "$MY_RG" \
  --vm-name "$MY_VM_NAME" \
  --name "$DISK_NAME"

# Wait a moment for the kernel to register the new block device
sleep 10

# --- 3. Mount & Verify ---
echo "Mounting all filesystems..."
if mount -a; then
    echo "Mount verified successfully."

    # --- 4. Start Services ---
    echo "Starting services..."
    systemctl start rhapsody.service
    systemctl start otelcol-contrib.service
    systemctl start otelcol-rhapsody.service
else
    echo "CRITICAL: Mount failed. Services will not start."
    exit 1
fi

Dev

The dev environment pulls its pre-built image from the following location.

Compute Gallery: ImageGallery

VM image definition: SnowflakeImages

Versions: 1.0.0 (latest version)

The above image was cut from the prod running instance on 20 Jan 2026
This means that if the server is rebuilt from a failure more than 6 months from this date, it is likely the image may need to be updated with the latest patches.

The user-data bootstrapping script has been modified from its original incarnation to a stand alone model.

#!/bin/bash
set -e

# --- Configuration ---
DISK_NAME="disk-m42-RhapsodyServices-uaen-dev-ASGDEV4"

# --- 1. Identity & Discovery ---
MY_RG=$(curl -s -H Metadata:true "http://169.254.169.254/metadata/instance/compute/resourceGroupName?api-version=2021-02-01&format=text")
MY_VM_NAME=$(curl -s -H Metadata:true "http://169.254.169.254/metadata/instance/compute/name?api-version=2021-02-01&format=text")

# Log in using Managed Identity
az login --identity

# --- 2. Attach the Disk ---
echo "Attaching disk: $DISK_NAME..."
az vm disk attach \
  --resource-group "$MY_RG" \
  --vm-name "$MY_VM_NAME" \
  --name "$DISK_NAME"

sleep 10

# --- 3. Mount & Verify ---
echo "Mounting all filesystems..."
if mount -a; then
    echo "Mount verified successfully."

    # --- 4. Start Services ---
    echo "Starting services..."
    systemctl start rhapsody.service
    systemctl start otelcol-contrib.service
    systemctl start otelcol-rhapsody.service
else
    echo "CRITICAL: Mount failed. Services will not start."
    exit 1
fi

Test

The test environment pulls its pre-built image from the following location.

Compute Gallery: ImageGallery

VM image definition: SnowflakeImagesTest

Versions: 1.0.1 (latest version)

The above image was cut from the prod running instance on 21 Jan 2026
This means that if the server is rebuilt from a failure more than 6 months from this date, it is likely the image may need to be updated with the latest patches.

The user-data bootstrapping script has been modified from its original incarnation to a stand alone model.

#!/bin/bash
set -e

# --- Configuration ---
DISK_NAME="disk-m42-RhapsodyServices-uaen-test-ASGDEV-3"

# --- 1. Identity & Discovery ---
MY_RG=$(curl -s -H Metadata:true "http://169.254.169.254/metadata/instance/compute/resourceGroupName?api-version=2021-02-01&format=text")
MY_VM_NAME=$(curl -s -H Metadata:true "http://169.254.169.254/metadata/instance/compute/name?api-version=2021-02-01&format=text")

# Log in using Managed Identity
az login --identity

# --- 2. Attach the Disk ---
echo "Attaching disk: $DISK_NAME..."
az vm disk attach \
  --resource-group "$MY_RG" \
  --vm-name "$MY_VM_NAME" \
  --name "$DISK_NAME"

sleep 10

# --- 3. Mount & Verify ---
echo "Mounting all filesystems..."
if mount -a; then
    echo "Mount verified successfully."

    # --- 4. Start Services ---
    echo "Starting services..."
    systemctl start rhapsody.service
    systemctl start otelcol-contrib.service
    systemctl start otelcol-rhapsody.service
else
    echo "CRITICAL: Mount failed. Services will not start."
    exit 1
fi