Home / Azure Local

Azure Local | Downloading Just the Update for Offline Installation

Azure Local | Downloading Just the Update for Offline Installation


Reading Time: 4 minutes

If you run Azure Local in a site with a thin pipe to Azure, an edge location, a regulated environment, or a fully disconnected sovereign deployment, you’ve felt the pain. Every solution update wants to pull gigabytes down the wire, and “intermittently connected” is a polite way of saying “this will time out at 80%”. For a while the only sane workaround was to stage things by hand and pray.

That changed quietly, and this post is the practical walkthrough I wish I’d had.

Since when can you do this?

The ability to download only the solution update as a static payload and import it offline has been a supported feature since Azure Local 2411.3. Make sure you run Azure Local 2411.3 or later to use this feature. This feature is available in Azure Local 2411.3 and later.

The bit you spotted in the portal, the Download dropdown on Azure Arc → Azure Local → Get started → Download software, with its two children “Download Local HCI OS” and “Azure local update”, is the GUI on top of that. “Download Local HCI OS” gives you the full operating system image for a fresh deployment. “Azure local update” gives you just the update package, which is exactly what you want when the OS is already on the box and you only need to move it forward a version.

It’s no accident this matured alongside Microsoft’s disconnected-operations push. Microsoft Sovereign Cloud’s expansion of capabilities includes Azure Local disconnected operations. Offline update import is one of the unglamorous building blocks that makes “runs even when completely disconnected” actually true.

What you’re actually downloading

Don’t picture a tidy little patch. The thing you pull is the CombinedSolutionBundle. The CombinedSolutionBundle is a zip file that contains the update package for the Azure Stack HCI OS, core agents and services, and the solution extension. It is named CombinedSolutionBundle.<build number>.zip, where <build number> is the build number for the release.

So in one archive you get the OS security update, the core agents, and the solution extension. That’s the 3.7 GB you saw next to build 12.2605.1003.210 in the package blade.

The important caveat, the one that bites people in genuinely air-gapped sites: the update process automatically downloads updated container images required for the Azure Arc resource bridge component and Azure Kubernetes Service on Azure Local. These images aren’t included in the static payload. So if you run Arc Resource Bridge or AKS on Azure Local, the bundle is not the whole story, because those images still get pulled during the update itself. Plan your connectivity window accordingly.

One more practical note from the docs, because timing trips people up: you might need to wait up to 24 hours after the release for the latest version of the CombinedSolutionBundle and its SHA256 hash to be available. If the freshest build isn’t downloadable the day it lands, that’s why. It’s not you.

Route 1: the portal

This is the friendly path and the one most people will use:

  1. Open Azure Arc → Azure Local → Get started.
  2. In 2. Download software, click Download ▾ and choose Azure local update.
  3. On the Azure Local package blade, set Current Azure Local solution version to the train you’re targeting (your screenshot shows 2604).
  4. Tick the build you want, for example 12.2605.1003.210, 3.7 GB, and hit Download package.

That gives you the bundle on your jump box. From here you still finish the job with PowerShell on the cluster, so let’s do the full hands-on route. It’s the one worth knowing cold.

Route 2: PowerShell, end to end

This is the canonical offline flow, and it’s the one to script if you manage more than one instance. Download once, copy to many.

Step 1: Download the bundle and verify it. Grab the download URI and the SHA256 from the release table, then:

# Download the CombinedSolutionBundle
Invoke-WebRequest `
  -Uri "<download URI>" `
  -OutFile "C:\ClusterStorage\Infrastructure_1\Shares\SU1_Infrastructure_1\import\CombinedSolutionBundle.<build number>.zip"

# Check the SHA256 hash of the downloaded CombinedSolutionBundle
Get-FileHash -Path "<path to CombinedSolutionBundle.zip>"

Use the SHA256 hash to check the integrity of your download. On a flaky link this is not optional, because a truncated bundle will fail you halfway through an update, which is the worst possible time.

Step 2: Stage and import. Create the discovery folder in the infrastructure volume, drop the zip in, extract to a Solution subfolder, and import:

# Create a folder for the update service to discover
New-Item C:\ClusterStorage\Infrastructure_1\Shares\SU1_Infrastructure_1\import -ItemType Directory

# Extract the contents of the CombinedSolutionBundle to the Solution subfolder
Expand-Archive `
  -Path C:\ClusterStorage\Infrastructure_1\Shares\SU1_Infrastructure_1\import\CombinedSolutionBundle.<build number>.zip `
  -DestinationPath C:\ClusterStorage\Infrastructure_1\Shares\SU1_Infrastructure_1\import\Solution

# Import the package into the update service
Add-SolutionUpdate -SourceFolder C:\ClusterStorage\Infrastructure_1\Shares\SU1_Infrastructure_1\import\Solution

Step 3: Discover and start. The update service indexes asynchronously, so be patient and re-run the discovery cmdlet. To discover the updates, run the Get-SolutionUpdate command. The update service discovers updates asynchronously, so you might need to run the Get-SolutionUpdate command more than once.

Get-SolutionUpdate

Then watch for one specific state: if the update returns a state of AdditionalContentRequired, follow the instructions in Update Azure Local via PowerShell to import the required Solution Builder Extension (SBE) updates. If it doesn’t, continue to the next step. If you’re on vendor-integrated hardware (Dell, HPE, Lenovo, and friends), expect to feed in the matching SBE package too, because the OS bundle alone won’t satisfy the health checks.

Once it shows ready, kick off the update the same way you would online.

The gotchas worth tattooing on your monitor

  • Container images still pull live. Arc Resource Bridge and AKS images are not in the bundle. True air-gap needs a separate plan for those. These images aren’t included in the static payload.
  • Always check the hash. Get-FileHash before you import, every time.
  • AdditionalContentRequired is not a failure. It just means “I also need your SBE.” Import it and carry on.
  • Mind the 24-hour availability lag on brand-new builds. You might need to wait up to 24 hours after the release.
  • Right bundle for the right OS family. For 25398.xxxx builds, use the CombinedSolutionBundle to update the OS and solution components for Azure Local. For 26100.xxxx builds, use the CombinedSolutionBundle to install a specific Azure Local version.

The headline is simple: download once, import many, update offline, and it’s been there since 2411.3. The portal’s “Azure local update” download just makes the front door obvious. For anyone running Azure Local at the edge or inside a sovereign boundary, this is the difference between an update window that fits your maintenance slot and one that doesn’t.

Share and Enjoy !

Shares

Designer (23)

Stay close to the action—follow GetToThe.Cloud across social!
Deep dives and hands‑on how‑tos on Azure Local, hybrid cloud, automation, PowerShell/Bicep, AVD + FSLogix, image pipelines, monitoring, networking, and resilient design when the internet/Azure is down.

🔗 Our channels
▶️ YouTube: https://www.youtube.com/channel/UCa33PgGdXt-Dr4w3Ub9hrdQ
💼 LinkedIn Group: https://www.linkedin.com/groups/9181126/
✖️ X (Twitter): https://x.com/Gettothecloud
🎵 TikTok: https://www.tiktok.com/@gettothecloud
🐙 GitHub: https://github.com/GetToThe-Cloud/Website
💬 Slack: DM us for an invite
📲 WhatsApp: DM for the community link

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active

Who we are

Our website address is: https://www.gettothe.cloud

Comments

When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection.An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment.

Media

If you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website.

Cookies

If you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year.If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser.When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed.If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day.

Embedded content from other websites

Articles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website.These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website.

Who we share your data with

If you request a password reset, your IP address will be included in the reset email.

How long we retain your data

If you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue.For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information.

What rights you have over your data

If you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes.

Where we send your data

Visitor comments may be checked through an automated spam detection service.
Save settings
Cookies settings