Azure News - 2026-09-18
2026-09-18
最終更新: 2026-09-19 08:41:56 JST
AI による概要
この日は 7 件で、大規模ネットワーク接続の一般提供、決済向け HSM の新版プレビュー、そして VM イメージ運用の自動化が話題でした。Azure Virtual Network Manager では、接続グループを使うハイスケールメッシュが一般提供となり、利用可能なリージョンでは 1 つのメッシュ接続構成に既定で最大 3,000 の仮想ネットワークを接続できます。Azure Payments HSM v2 がパブリックプレビューとなり、決済処理・クレデンシャル発行・PIN 処理・鍵管理・認証データ保護向けの、高可用でシングルテナントの Payment HSM サービスとして、顧客が隔離された HSM に対する排他的な管理権限を保持します。アーキテクチャブログでは、小売業が複数都市の店舗網で販促セールを展開するシナリオを題材に、サードパーティ システム (商品・店舗・セールイベント) と ERP (顧客データ) に分かれたデータを扱う記事が 2 本続きました。1 本は OneLake 上のデータを Fabric IQ で扱うエージェント体験、もう 1 本は Dynamics 365 Finance and Operations と Fabric IQ を組み合わせた Foundry IQ を取り上げ、都市によって顧客と店舗が結び付けられる構造をどうモデル化するかを示しています。インフラストラクチャブログでは、Packer と Azure DevOps で VM イメージの作成と検証を自動化する手法が解説されました。ソースイメージから Packer ビルド、Azure Compute Gallery、検証用 VM、エビデンス取得、制御された昇格へと進む流れで、手作業のイメージ管理に起因する構成ドリフトや再現性の低さ、リリースの追跡性の乏しさを避け、各イメージをバージョン管理されたビルド成果物として扱います。セキュリティブログでは、メールセキュリティのベンチマークレポートで配信前・配信後の両シナリオにおける Microsoft Defender の高い実績が示されたこと、そして AI が変えたサイバーセキュリティの環境の中でリスクを確実に減らす基本対策を、エクスポージャー管理のガイダンスとして行動に移す考え方が公開されました。
主要トピック
ネットワーク: Azure Virtual Network Manager のハイスケールメッシュが GA、1 メッシュ構成で既定最大 3,000 の仮想ネットワークを接続
セキュリティ基盤: Azure Payments HSM v2 がパブリックプレビュー、決済向けのシングルテナント Payment HSM
運用自動化: Packer と Azure DevOps で VM イメージのビルドから検証・昇格までを自動化
データ / AI: 小売の販促シナリオを題材に、OneLake のデータを Fabric IQ で扱うエージェント体験
データ / AI: D365 Finance and Operations と Fabric IQ を組み合わせた Foundry IQ の設計
メールセキュリティ: 実環境の Microsoft Defender の配信前・配信後の実績をベンチマークで紹介
セキュリティ指針: エクスポージャー管理に基づき、リスクを確実に減らす基本対策を行動に移すガイダンス
Azure Updates
[Launched] Generally Available: High-scale mesh in Azure Virtual Network Manager
- Link: https://azure.microsoft.com/updates?id=571572
- Published: 2026-09-18 02:40:33
- Fetched: 2026-09-18 05:38:26
[In preview] Public Preview: Azure Payments HSM v2
- Link: https://azure.microsoft.com/updates?id=570509
- Published: 2026-09-18 03:36:44
- Fetched: 2026-09-18 05:38:26
Microsoft Security Blog
Improving email security outcomes with real-world Microsoft Defender insights
- Link: https://www.microsoft.com/en-us/security/blog/2026/09/17/improving-email-security-outcomes-with-real-world-microsoft-defender-insights/
- Published: 2026-09-18 01:00:00
- Fetched: 2026-09-18 02:46:37
The latest email security benchmarking reports show strong Microsoft Defender performance across pre-delivery and post-delivery scenarios and reveal where threats and defenses continue to evolve.
The post Improving email security outcomes with real-world Microsoft Defender insights appeared first on Microsoft Security Blog.
From guidance to action: Security fundamentals that materially reduce risk
- Link: https://www.microsoft.com/en-us/security/blog/2026/09/17/from-guidance-to-action-security-fundamentals-that-materially-reduce-risk/
- Published: 2026-09-18 02:00:00
- Fetched: 2026-09-18 02:46:37
AI has made fundamental changes to the operating environment for cybersecurity. Explore exposure management guidance on recommended controls and take action and stay ahead of cyberthreats.
The post From guidance to action: Security fundamentals that materially reduce risk appeared first on Microsoft Security Blog.
Azure Architecture Blog
Agent experience with data in Onelake using Fabric IQ
- Link: https://techcommunity.microsoft.com/t5/azure-architecture-blog/agent-experience-with-data-in-onelake-using-fabric-iq/ba-p/4557504
- Published: 2026-09-18 08:57:52
- Fetched: 2026-09-18 20:55:56
詳細を表示
Business Scenario
A retail organization runs multiple promotional sales events across its store network in different cities, featuring various product categories.
Data is captured from:
- Third-party systems (products, stores, sales events)
- ERP system i.e. Finance and Operations (customer data)
Customers are linked to stores based on city in the ERP system, and each store hosts specific sales events.
However, while significant investments are made in marketing campaigns, inventory allocation, and event planning, the organization needs to identify
- Which stores generate the highest revenue during events
- Which locations are having majority of customer footprint
Solution:
Rather than creating custom reports on raw data, an agent can leverage the data in Onelake and use Fabric semantic models and Fabric IQ to provide conversational analytics. The agent can intelligently normalize user inputs and return accurate results even when values such as city names are entered with spelling errors or variations.
Advantage:
Because the data comes from two disconnected worlds (third-party systems for products/stores/events, ERP for customers), the "join" between them — customer → city → store → event → product — is business logic, not a database key. Fabric Ontology captures exactly that: entity types, relationships, rules and source mappings, so agents don't have to rediscover it from raw tables each time.
A. Prerequisite:
Data Sources & Relationships Overview
- Product, store, and sales event data are sourced from third-party systems.
- Customer data is sourced from the ERP (Dynamics 365 Finance & Operations) system through Fabric lakehouse.
How the data is connected:
- Customers are linked to stores based on city alignment (customer city = store location).
- Sales events are associated with:
- The products being sold, and
- The stores where the events are conducted.
Licenses and access requirement:
|
Component |
License / Requirement |
|
Microsoft Fabric |
Fabric Capacity F2 or higher OR Power BI Premium Capacity P1 or higher with Fabric enabled |
|
Fabric IQ Ontology |
Ontology (Preview) enabled and an active Ontology item in Fabric |
|
Copilot Studio |
A Copilot Studio environment where MCP tools are allowed |
|
D365 F&O |
Valid Dynamics 365 Finance and/or Supply Chain Management licenses for the source users and data access |
|
Data movement |
Fabric ingestion pattern (Lakehouse, OneLake, Dataflow, Link to Fabric, etc.) as applicable |
B. Step by step configuration:
- Push the data to OneLake : Connect D365 F&O customer data to Fabric Lakehouse through PowerPlatform
- A Lake house will be created in Fabric with the data
- Ingest the Data for Store , Sales event and Product from third party system to Fabric using any of the methods as outlined in the documentation below (as relevant)
Ref: https://learn.microsoft.com/en-us/fabric/data-engineering/load-data-lakehouse
- Create a semantic model and relationship between them
Ref: https://learn.microsoft.com/en-us/fabric/data-engineering/tutorial-lakehouse-build-report
- Create Ontology using the semantic model
Ref: https://learn.microsoft.com/en-us/fabric/iq/ontology/concepts-generate
Ref: Create an Ontology with Fabric IQ - Training | Microsoft Learn
Click on View entity type details > click on manage relationship > click on the relation
Configure the source and target entity names and connected fields. Repeat similar setup for others as relevant
- Login to https://copilotstudio.preview.microsoft.com/ and Create Copilot studio agent with following instruction:
When processing a user query:
- Determine whether the user input contains a city name, location name, region, state, or geographical reference.
- If a location reference is detected:
o Identify potential spelling mistakes, abbreviations, alternate spellings, phonetic variations, or non-standard user input using the <<custom prompt>>.
o Normalize the value to the most likely official city name used in the enterprise data model.
o Examples:
- "Bombay" → "Mumbai"
- "NYC" → "New York"
- Use only the normalized location value when querying Fabric IQ.
- If confidence in the normalization is high, proceed automatically without asking the user for confirmation.
- If multiple cities are equally likely matches, ask a clarifying question before querying Fabric IQ.
- When invoking Fabric IQ MCP:
o Replace the original user-entered city value with the normalized city value.
o Use the normalized value consistently across all ontology searches and filters.
- Never expose the internal normalization process unless the user explicitly asks how the result was determined.
- Return the business result based on data retrieved from Fabric IQ, not based on assumptions.
Example: User: "Show sales for Bangaluru last quarter" Normalized City: "Bengaluru" Fabric IQ Query: "Show sales for Bengaluru last quarter"
- Add Fabric IQ MCP tool
Click on Fabric IQ MCP and provide workspace ID and Ontology ID as retrieved from the Ontology URL in Fabric
To find the URL, follow these steps:
- Open your ontology item in Fabric.
- View the URL in the browser, in the format https://app.fabric.microsoft.com/groups/<workspace-ID>/ontologies/<ontology-item-ID>.
- Copy the values of <workspace-ID> and <ontology-item-ID> from the URL.
- Form the MCP server URL by entering the copied values into this string: https://api.fabric.microsoft.com/v1/mcp/dataPlane/workspaces/<workspace-ID>/items/<ontology-item-ID>/ontologyEndpoint.You use this MCP server URL in the next section
- Following figures explains the details once the process
Ref: https://learn.microsoft.com/en-us/fabric/iq/ontology/how-to-create-agent-copilot-studio
- Add a tool Prompt to ensure normalised search for any user input (e.g. City)
Put the following instruction in a custom prompt :
You are a location normalization expert.
Your task is to identify the most likely city name from the user's input, even when:
- The city name contains spelling mistakes.
- The city name is partially entered.
- The city is entered using an old or alternate name.
- The city contains abbreviations or phonetic spellings.
Rules:
- Determine the most likely official city name.
- Correct spelling mistakes using geographic knowledge.
- Expand abbreviations where appropriate.
- Return only the normalized city name.
- If confidence is below 80%, return "AMBIGUOUS".
- Never invent a city when multiple equally likely matches exist.
Examples:
Input: Banglore
Output: Bengaluru
Input: Mumbi
Output: Mumbai
Input: BNG
Output: Bengaluru
Input: Londn
Output: London
City input: {{CityName}}
Output format:
{
"normalizedCity": "Bengaluru",
"confidence": 0.95
}
- Test the agent
- Open the Test pane using the Test button in the top right corner of the screen. Enter NL query
- Allow the MCP tool when prompted
Test case 1: What is the top product revenue across all stores?
Test case 2: Intelligent Location Normalization with Fabric IQ
When a user submits a query such as "Compare the customer footfall between city Blr and Hyd", the agent first applies an AI-powered normalization layer before querying enterprise data.
The normalization prompt analyses abbreviations, alternate spellings, phonetic variations, and non-standard location references, mapping them to their canonical business values. In this example:
Blr → Bengaluru (Bangalore)
Hyd → Hyderabad
The normalized city names are then passed to Fabric IQ for semantic retrieval against the ontology and underlying data sources. This approach improves query accuracy, reduces dependency on exact user input, and enables a more natural conversational experience while ensuring consistent reporting and analytics results.
Process Flow :
User Query
→ AI Prompt Normalization
→ Canonical City Resolution (Bengaluru, Hyderabad)
→ Fabric IQ Semantic Search
→ Data Retrieval & Comparison Results
Foundry IQ with D365F&O and Fabric IQ
- Link: https://techcommunity.microsoft.com/t5/azure-architecture-blog/foundry-iq-with-d365f-o-and-fabric-iq/ba-p/4557380
- Published: 2026-09-18 21:22:02
- Fetched: 2026-09-19 08:41:56
詳細を表示
Business Scenario
A retail organization runs multiple promotional sales events across its store network in different cities, featuring various product categories where Data is captured from third-party systems (products, stores, sales events) and D365 Finance and Operations (customer data)
Customers are linked to stores based on city, and each store hosts specific sales events.
To figure out the store generating highest revenue, store event driving the best outcome, majority customer footprint, the organization has implemented copilot studio agent using Fabric IQ, Ontology and ERP MCP.
New Business Challenge
Beyond understanding past performance, the retailer wants the system to answer:
- Are there procurement risks impacting promotional sales?
- Which cities should receive additional marketing spend?
Solution
Create a foundry agent using Foundry IQ including Fabric IQ, Web IQ, Web IQ as knowledge source.
Foundry IQ is not the source of data. Its primary role is the reasoning, orchestration, and decision-making layer that connects insights from Fabric IQ, Work IQ, and Web IQ , sharepoint, blob, custom agents etc and generates business recommendations. It is backed by Azure AI search to get an indexed search with accurate result.
A. Prerequisite:
Data Sources & Relationships Overview
- Product, store, and sales event data are sourced from third-party systems .
- Customer data is sourced from the ERP (Dynamics 365 Finance & Operations) system through Fabric.
How the data is connected:
- Customers are linked to stores based on city alignment (customer city = store location).
- Sales events are associated with:
o The products being sold, and
o The stores where the events are conducted.
- Country specific marketing policy documents stored in sharepoint
- WebIQ Setup for getting real time information from web (Web IQ is the key enabler for the supplier-news scenario. It can help with Real-time supplier news, market disruptions, geopolitical events, regulatory changes, competitor activity)
Ref: https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/web-iq
- Finance and Operations data connected toFabric Lakehouse
- Store, event , Product data ingested to lakehouse using any of the methods as outlined in the documentation below
Ref: https://learn.microsoft.com/en-us/fabric/data-engineering/load-data-lakehouse
- Fabric Ontology created combining the F&O customer, store, product and event data (sample screenshot below)
- A Microsoft Foundry project with an LLM deployment, such as gpt-4.1-mini.
- Authentication and permissions on your search service and project.
B. Architecture Pattern
C. Step by Step Configuration
- Goto Azure portal and add a search service (as that runs in the background of foundry IQ for an indexed search)
Ref: https://learn.microsoft.com/en-us/azure/search/search-create-service-portal
- Goto Azure foundry portal (https://ai.azure.com/) and add an agent with ERP MCP as a tool:
- Goto knowledge (Foundry IQ) and select the AI Search
- Create a knowledgebase and add the following options: Fabric IQ , Web , SharePoint. Use the knowledge base for the Retail growth Intelligence agent
- Working with the agent
The agent can be published in the channel of choice (M365, teams, copilot studio using A2A etc).
Ref: https://learn.microsoft.com/en-us/azure/foundry/agents/how-to/publish-copilot
The question "Are there procurement timeline or any other risks impacting promotional sales?"
is exactly the type of cross-domain reasoning scenario where the agent combines:
- Fabric IQ Ontology → understands relationships between Store, Product, SaleEvent, Customer.
- F&O ERP MCP → retrieves operational procurement data such as PO status, Confirmed Delivery Date, Vendor performance, Inventory levels.
- SharePoint Policy Repository → validates country-specific marketing investment rules and campaign approval constraints.
- Foundry IQ/Web Intelligence (if enabled) → checks supplier news, disruptions, external market events.
|
Sub-question |
Source |
Why |
|
Which promotional sale events are upcoming, at which stores, for which products |
Fabric IQ ontology |
The ontology gives the agent "business meaning… entity types (such as Store, Product…) and their relationships, not just raw tables" — so SaleEvent → Products → Store is the anchor. |
|
Are the promoted products actually going to be in stock in time — open POs, confirmed delivery dates, vendor lead times, on-hand/available inventory, any PO holds or approval delays |
D365 F&O via the ERP MCP server |
The dynamic ERP MCP server exposes data tools (entity CRUD via OData entities) and form tools, so the agent can read purchase order lines, confirmed receipt dates, inventory on-hand, vendor lead time — the procurement facts the ontology simply doesn't hold. |
|
Does the promotion comply with the country policy — approval lead times, spend caps, blackout periods, mandatory sign-offs |
SharePoint (Marketing Policy / Germany, India, USA) |
Policy is unstructured and country-specific; the agent must pick the folder matching the store's country and read it |
D. Conclusion
The approach transforms disconnected operational and market information into a unified decision-support experience using the process flow as: Business Question → Understand Context → Retrieve Live ERP Data → Validate Policies → Check External Risks → Correlate Insights → Recommend Business Action
It is helping business stakeholders to take proactive, AI-driven decisions ensuring the following business advantage
- Faster decisions: reduces manual reconciliation across multiple systems and documents.
- Higher-quality recommendations: connects operational facts with business context and external signals.
- Scalable access: makes cross-domain intelligence available through a reusable, conversational agent.
- Proactive risk detection identifies supply, inventory, policy, and market risks before promotions are affected
Azure Infrastructure Blog
Automating Azure VM Image Baking and Validation with Packer and Azure DevOps
- Link: https://techcommunity.microsoft.com/t5/azure-infrastructure-blog/automating-azure-vm-image-baking-and-validation-with-packer-and/ba-p/4557578
- Published: 2026-09-18 17:15:11
- Fetched: 2026-09-18 20:55:57
詳細を表示
Solution at a glance
Source image → Packer build → Azure Compute Gallery → Validation VM → Evidence → Controlled promotion
Introduction
Maintaining enterprise virtual machine images manually can lead to configuration drift, inconsistent builds, slow remediation and limited release traceability. A stronger pattern is to treat each image as a versioned build artefact: create it from a controlled source, configure it deterministically, validate the published image and promote only an explicitly identified version.
This article presents a generic implementation using HashiCorp Packer and Azure DevOps. The examples intentionally use non-production placeholders and avoid customer-specific names, subscriptions, networks, credentials, repositories, gallery names, certificate material, package sources and internal promotion topology.
What this article demonstrates
- Consolidate a layered image process into a parameterised Packer build.
- Preserve image metadata and Azure Marketplace lineage through publication.
- Validate the published image version rather than only the temporary build VM.
- Publish validation evidence and make promotion decisions traceable.
Solution overview
|
1. Source |
2. Build |
3. Publish |
4. Validate |
5. Evidence |
6. Promote |
|
Marketplace image |
Packer + scripts |
Compute Gallery |
Temporary VM |
JSON + logs |
Approved version |
Reference architecture
The pipeline separates image creation, validation, security scanning and promotion. This separation makes each release decision explicit and preserves evidence for the exact image version that downstream workloads consume.
Azure DevOps
OrchestrationPacker
Image buildCompute Gallery
Versioned artefactValidation VM
Runtime checksRelease gate
PromotionImportant A successful Packer build proves that the build completed. It does not prove that the published gallery image behaves correctly when consumed. Validate the published version independently.
Designing the image build
Why use a single reproducible build?
Layered pipelines can be useful, but multiple sequential image builds create intermediate artefacts and dependencies that complicate remediation. Where the complete configuration can be reproduced from source, use one ordered flow: select the source image, configure the operating system, apply the chosen hardening profile, install the runtime, configure trust, run smoke checks, clean up and capture the result.
Parameterise the pipeline
Keep environment-specific values outside the reusable image logic. Typical queue-time parameters include runtime version, image flavour, build region, optional security scanning and the image version to validate.
Queue-time pipeline parameters (YAML)
parameters: - name: runtimeVersion type: string default: '17' values: ['8', '11', '17', '21'] - name: imageFlavor type: string default: standard values: [standard, cis] - name: enableSecurityScan type: boolean default: false - name: location type: string default: eastusDefine the Packer builder and provisioning order
Use a single template with an explicit provisioning sequence. Fail the build for conditions that make the image unusable; keep advisory checks separate when the release process intentionally treats them as non-blocking
Generic Azure builder and inputs (HCL)
packer { required_plugins { azure = { source = "github.com/hashicorp/azure" version = "~> 2.6" } } }variable "location" { type = string } variable "image_name" { type = string } variable "image_version" { type = string } variable "runtime_version" { type = string } variable "image_flavour" { type = string }
source "azure-arm" "base" { use_azure_cli_auth = true location = var.location os_type = "Linux" vm_size = "Standard_D4s_v5" image_publisher = "RedHat" image_offer = "RHEL" image_sku = "8-lvm-gen2" image_version = "latest" managed_image_resource_group_name = "rg-image-build" managed_image_name = "${var.image_name}-${var.image_version}" }
Deterministic provisioning sequence (HCL)
build { sources = ["source.azure-arm.base"]provisioner "shell" { script = "scripts/os-update.sh" } provisioner "shell" { script = "scripts/configure-system.sh" } provisioner "shell" { environment_vars = [ "RUNTIME_VERSION=${var.runtime_version}", "IMAGE_FLAVOUR=${var.image_flavour}" ] script = "scripts/install-runtime.sh" } provisioner "shell" { script = "scripts/configure-trust.sh" } provisioner "shell" { script = "scripts/image-smoke-test.sh" } provisioner "shell" { script = "scripts/image-cleanup.sh" } }
Authentication Use Azure DevOps service connections or workload identity. Do not place client secrets in Packer templates or ordinary YAML parameters, and do not write sensitive values to logs or image artefacts.
Marketplace lineage When the selected source image includes purchase-plan metadata, preserve the required plan information and verify the gallery definition before promotion.
Version images independently
Maintain a separate incrementing version stream for each runtime and image-flavour combination. This keeps versions meaningful within the corresponding image definition.
Version key concept
imageVersion: '8.1.$(imageMinor)' # Counter key: <runtime>-<flavour>Validate the published image
After publication, deploy a temporary VM from the exact gallery image version, run validation remotely, publish the results and always remove temporary resources.
Create and validate a VM from the published version (YAML)
- stage: ValidatePublishedImage dependsOn: BuildImage jobs: - job: ValidationVM steps: - task: AzureCLI@2 inputs: azureSubscription: $(validationServiceConnection) scriptType: bash scriptLocation: inlineScript inlineScript: | set -euo pipefail az vm create \ --resource-group "$(validationResourceGroup)" \ --name "$(validationVmName)" \ --image "$(galleryImageVersionId)" \ --admin-username imageadmin \ --generate-ssh-keys az vm run-command invoke \ --resource-group "$(validationResourceGroup)" \ --name "$(validationVmName)" \ --command-id RunShellScript \ --scripts @scripts/image-validation.shValidation coverage
- Operating-system baseline and expected distribution/version.
- Runtime version and required environment variables.
- Required packages, services and cloud-agent readiness.
- Truststore existence and basic integrity.
- Expected hardening state for the selected image flavour.
Minimal in-guest validation script (Bash)
#!/usr/bin/env bash set -euo pipefail report_dir="${REPORT_DIR:-validation-results}" mkdir -p "$report_dir"check() { local name="$1"; shift if "$@"; then printf '%s\tPASS\n' "$name" | tee -a "$report_dir/result.txt" else printf '%s\tFAIL\n' "$name" | tee -a "$report_dir/result.txt" return 1 fi }
check os-baseline grep -q '^ID="rhel"' /etc/os-release check runtime-version java -version check java-home test -n "${JAVA_HOME:-}" check truststore test -s "${JAVA_HOME}/lib/security/cacerts" check cloud-agent systemctl is-active --quiet waagent
Publish evidence and enforce the gate
- task: PublishPipelineArtifact@1 displayName: Publish image validation evidence condition: always() inputs: targetPath: validation-results artifact: image-validation- bash: jq -e '.result == "PASS"' validation-results/result.json displayName: Enforce validation gate
The report should identify the image definition and version and provide an explicit result for every check. Correlate build logs, validation artefacts, scan outputs and promotion records with the pipeline run.
Promotion and release controls
Bake once, then promote the same identified image version rather than rebuilding independently for each environment. If validation or scanning is required for a production release, represent that requirement as a pipeline dependency or approval gate.
Promotion dependency and approval boundary (YAML)
- stage: Promote dependsOn: - BuildImage - ValidatePublishedImage - SecurityScan condition: | and( succeeded('BuildImage'), succeeded('ValidatePublishedImage'), or( eq('${{ parameters.enableSecurityScan }}', false), succeeded('SecurityScan') ) ) jobs: - deployment: PromoteImage environment: image-production-approval strategy: runOnce: deploy: steps: - bash: ./scripts/promote-image-version.shFailure handling and clean-up
- task: AzureCLI@2 displayName: Remove temporary validation resources condition: always() inputs: azureSubscription: $(validationServiceConnection) scriptType: bash scriptLocation: inlineScript inlineScript: | az vm delete \ --resource-group "$(validationResourceGroup)" \ --name "$(validationVmName)" --yes || true az disk delete \ --resource-group "$(validationResourceGroup)" \ --name "$(validationOsDiskName)" --yes || true- Revoke temporary disk access before deleting staging resources.
- Use the pipeline run or image version in temporary resource names.
- Do not overwrite a successfully published image version.
- Define retention for gallery versions and capture intermediates.
- Rollback by directing new deployments to a previous known-good version.
Production considerations
Release gates
|
Gate |
Expected evidence |
|
Build |
Packer completes; the image version reaches a successful provisioning state; expected metadata is present. |
|
Functional |
A VM created from the published version passes OS, runtime, package, service, agent and trust checks. |
|
Security |
Hardening and vulnerability outputs meet the organisation’s defined release threshold. |
|
Promotion |
The validated version is copied or replicated without rebuilding, and target metadata matches. |
|
Operational |
Temporary resources are removed, evidence is retained, ownership is clear and rollback is recorded. |
Stable validation contract
Use a small, predictable report schema so the pipeline, release approvers and downstream automation interpret the same top-level result.
Example validation report (JSON)
{ "schemaVersion": "1.0", "image": { "definition": "rhel-runtime-standard", "version": "8.1.12" }, "result": "PASS", "checks": [ {"name": "os-baseline", "status": "PASS"}, {"name": "runtime-version", "status": "PASS"}, {"name": "truststore", "status": "PASS"}, {"name": "required-services", "status": "PASS"} ] }Operational checklist
- Verify source-image terms and permissions before each bake.
- Pin Packer and plug-in versions; test upgrades deliberately.
- Give build and promotion identities only the scopes they require.
- Confirm validation targets the same subscription, gallery, definition and version produced by the build.
- Define promotion, retention, retry, notification and ownership policies before production handover.
- Keep a build summary, validation report, scan output, promotion record and cleanup record for each released version.
Consumer rollout
The image pipeline ends at a versioned, validated gallery artefact. Consumers such as Virtual Machine Scale Sets should reference an explicit version during controlled rollout, validate health after deployment and move new deployments to a previous known-good version when rollback is required.
Conclusion
Image baking becomes easier to operate when it is treated as a software-delivery problem: source-controlled configuration, deterministic builds, explicit metadata, versioned outputs, independent validation, published evidence and controlled promotion. Packer supplies the repeatable image build, Azure DevOps supplies orchestration and governance, and Azure Compute Gallery supplies the distribution boundary.
The most important addition is validating the image after publication so release decisions are based on the same artefact that downstream workloads will consume.
Adapt before use The examples are intentionally generic. Replace placeholder names and policy thresholds for the target environment; keep secrets in protected variables or an approved secret store.
References
- Azure Pipelines runtime parameters: https://learn.microsoft.com/azure/devops/pipelines/process/runtime-parameters
- HashiCorp Packer Azure ARM builder: https://learn.microsoft.com/azure/devops/pipelines/process/runtime-parameters
- Create Linux Azure VM images with Packer: https://learn.microsoft.com/azure/devops/pipelines/process/runtime-parameters
- Azure Infrastructure Blog: https://learn.microsoft.com/azure/devops/pipelines/process/runtime-parameters
- Deploying custom images and implementing CI/CD for Azure Virtual Machine Scale Sets: https://techcommunity.microsoft.com/blog/azureinfrastructureblog/deploying-custom-images-and-implementing-cicd-for-azure-virtual-machine-scale-se/4556902