Skip to content

Commit e24bb86

Browse files
mswantek68Mike Swantek
andauthored
feat: Adding AI Landing Zone and Fabric workspace automation to provisioning (#101)
* feat: streamlined azd deployment using AI Landing Zone submodule - Remove all local Bicep modules (infra/modules/*) to eliminate duplication - Create minimal main.bicep (160 lines) that directly calls AI Landing Zone submodule - Add comprehensive main.parameters.json with deployment toggles and service configuration - Add QUICKSTART.md for 5-minute deployment instructions - Add detailed docs/AZD_DEPLOYMENT.md with full parameter reference - Configure for azd CLI deployment workflow - Enable AI Foundry with GPT-4o and text-embedding-3-small models - All services deployed with private endpoints for security - Type-safe parameters using AI Landing Zone type definitions * docs: add comprehensive deployment summary * docs: add comprehensive parameter customization guide * feat: add modern .bicepparam file with type safety and IntelliSense - Add infra/main.bicepparam with full type safety and validation - Remove 'role' properties from vNet subnets (use standard AVM schema) - Add delegation for Container Apps subnet - Add comprehensive inline documentation and comments - Add docs/BICEP_PARAMETERS.md explaining both formats - Keep main.parameters.json for backward compatibility - Benefits: type safety, IntelliSense, compile-time validation, better DX * docs: update QUICKSTART to recommend bicepparam file * fix: align deployToggles with AI Landing Zone defaults and add clarifying comments - Keep current practical defaults (core services enabled, optional disabled) - Add note that AI LZ example has everything set to true - Add helpful inline comments explaining when to enable each toggle - Clarify NSG toggles should match their corresponding service toggles - Improve developer guidance for customization * fix: enable Bastion and Jump VM by default for accessing private endpoints BREAKING: Resources now use private endpoints without public access REQUIRED: Bastion + Jump VM needed to manage and access services - Enable bastionHost: true (required for accessing private resources) - Enable jumpVm: true (Windows jump box accessed via Bastion) - Enable bastionNsg: true and jumpboxNsg: true (required NSGs) - Add AzureBastionSubnet (10.0.5.0/26) to vNet - Add snet-jumpbox (10.0.6.0/28) to vNet This is the correct default for a secure, production deployment with private endpoints - you MUST have a way to access the resources! * docs: add comprehensive guide for accessing private resources - Add docs/ACCESSING_PRIVATE_RESOURCES.md with detailed access instructions - Explain Bastion + Jump VM requirement for private endpoints - Document cost implications (~75/month for secure access) - Provide cost optimization strategies (stop VM when not in use) - Add alternative access methods (VPN, Build VM, public endpoints) - Include security best practices and troubleshooting - Update QUICKSTART.md to list Bastion in deployment output * docs: add prominent warnings about ARM 4MB template size limit - Add warning at top of AZD_DEPLOYMENT.md about RequestContentTooLarge error - Add 'If Deployment Fails' section to QUICKSTART.md with immediate fix - Document that default config with Bastion enabled will likely fail - Provide clear fix: disable Bastion initially, add later via idempotent redeployment - Add comprehensive troubleshooting section in AZD_DEPLOYMENT.md - Explain trade-offs: public vs private endpoints, cost implications - Keep all parameters flexible - users choose their configuration This addresses the immediate issue users will face with default configuration while maintaining flexibility and documenting the upgrade path. * feat: integrate AI Landing Zone submodule with Template Spec support - Add AI Landing Zone as git submodule for clean architecture - Create minimal wrapper (160 lines) that calls AI Landing Zone main.bicep - Implement preprovision scripts (PowerShell + Bash) for Template Spec creation - Configure AI Landing Zone defaults (192.168.0.0/22 network, proper subnet names) - Template Specs bypass ARM 4MB deployment limit - Clean azure.yaml with only preprovision hook (no legacy sample app scripts) - Successful deployment of full stack: VNet, AI Services, GPT-4o, Cosmos DB, AI Search, Container Apps, Bastion * chore: update AI Landing Zone submodule pointer * feat: Complete 5-stage modular deployment with conditional toggles - Created main-orchestrator.bicep with 5-stage deployment pattern - Implemented centralized deployToggles parameter in main-orchestrator.bicepparam - Built Stage 1 (Networking): VNet + 5 NSGs with conditional deployment - Built Stage 2 (Monitoring): Log Analytics + App Insights with conditionals - Built Stage 3 (Security): KeyVault + Bastion + Jump VM with conditionals - Built Stage 4 (Data): Storage, Cosmos, Search, ACR + private endpoints with conditionals - Built Stage 5 (Compute/AI): Container Apps Environment + AI Foundry with conditionals - All stages use AI Landing Zone wrappers and follow exact naming patterns - All 11 deployment toggles functional and set to true for complete deployment - Updated azure.yaml to use main-orchestrator as deployment entry point - Successfully tested full deployment with all resources deployed * chore: Remove unused deployment files - Deleted infra/main.bicep (old monolithic deployment) - Deleted infra/main.bicepparam (old parameter file) - Deleted infra/main.parameters.json (old JSON parameters) - Deleted infra/orchestrators/main-modular.bicep (earlier iteration) - Deleted infra/params/ directory (no longer needed) All deployments now use main-orchestrator.bicep with 5-stage modular architecture * chore: Remove unused scripts and Python requirements Deleted Template Spec scripts (modular deployment doesn't need them): - scripts/preprovision-integrated.ps1 - scripts/preprovision-integrated.sh Deleted Python/sample data scripts (not using Python): - scripts/install_python.ps1 - scripts/process_sample_data.ps1 - scripts/process_sample_data.sh - scripts/index_scripts/ (entire directory) - scripts/auth_init.py - scripts/auth_update.py - requirements.txt - requirements-dev.txt Deleted connection/testing scripts (infrastructure only): - scripts/set_conns_env_vars.ps1 - scripts/set_conns_env_vars.sh - scripts/test_azure_resource_conns.ps1 Kept scripts (still useful): - scripts/auth_init.ps1 / auth_init.sh (basic auth) - scripts/loadenv.ps1 / loadenv.sh (environment variables) - scripts/postprovision.ps1 / postprovision.sh (post-deployment) - scripts/quota_check.sh (quota checking) * chore: Remove outdated documentation files - Deleted DEPLOYMENT_SUMMARY.md (refers to old feature/azd-submodule-deployment branch) - Deleted QUICKSTART.md (outdated, refers to non-existent main.bicepparam) Current documentation: - QUICKSTART_MODULAR.md - Quick start for modular deployment - docs/MODULAR_DEPLOYMENT.md - Full modular deployment documentation - README.md - Updated with deployment options * Fix subnet layout and Application Gateway private IP to match AI Landing Zone. Resolves Azure Firewall deployment failures due to subnet overlap. * Apply AI Landing Zone variable pattern to all 5 stages. Resolves Bicep conditional output errors. * Mark as internal development branch * Add Stage 6 (Fabric Capacity) and import automation scripts from fabric-purview-domain-integration - Added Stage 6: Microsoft Fabric Capacity deployment with AVM module v0.1.2 - Added all parameters for future phases: Fabric, Purview, AI Services, Lakehouses - Imported 37 automation scripts from fabric-purview-domain-integration repo: * Fabric_Purview_Automation/ - Fabric workspace, domain, lakehouse automation * OneLakeIndex/ - OneLake document indexing with AI Search * SecurityModule.ps1 - Centralized token security * cleanup/ - Workspace cleanup utilities * monitoring/ - Workflow telemetry - Fixed stage3-security.bicep bastion module path (deploy/wrappers) - Updated main-orchestrator.bicep with organized parameter sections - Updated main-orchestrator.bicepparam with all new parameters - Ready for next phase: Fabric workspace and Purview integration automation * feat: Add Fabric private networking with automated public access control Major enhancements: - Added Stage 7: Fabric Private Networking infrastructure (DNS zones, VNet links) - Created setup_fabric_private_link.ps1 with auto-approved shared private link creation - Automated workspace communication policy to deny public access via Fabric REST API - Added 11 deployment outputs to main-orchestrator.bicep for script automation - Enhanced azure.yaml with 17 postprovision automation stages - Created comprehensive documentation (fabric-onelake-private-networking.md, automation-outputs-mapping.md) * feat: Add cross-subscription Purview support and fix deployment issues CROSS-SUBSCRIPTION PURVIEW INTEGRATION: - Added purviewSubscriptionId and purviewResourceGroup parameters to main-orchestrator.bicep - Added corresponding outputs for script consumption - Updated create_purview_collection.ps1 to handle cross-subscription Purview accounts - Updated trigger_purview_scan_for_fabric_workspace.ps1 with subscription/RG resolution - Tested successfully with Purview account in different subscription (48ab3756-f962-40a8-b0cf-b33ddae744bb) DEPLOYMENT FIXES: - Fixed VM disk type mismatches (Premium_LRS → Standard_LRS) in stage3-security.bicep and stage5-compute-ai.bicep * Azure doesn't allow changing disk SKU on existing VMs through ARM deployment * Changed to Standard_LRS to match already-deployed infrastructure - Added environment variable fallbacks to create_fabric_workspace.ps1 for azd output variables * Added fallback for $env:desiredFabricWorkspaceName * Added fallback for $env:fabricCapacityId * Scripts now work correctly with azd hooks FABRIC WORKSPACE AUTOMATION: - Successfully created workspace 'workspace002' and assigned to capacity FE509DCC-0864-4EBD-B69E-576E4E286AC5 - Successfully created domain 'datadomain002' and assigned workspace - Workspace admin configured: admin@MngEnv282784.onmicrosoft.com TESTING STATUS: ✅ Infrastructure deploys without errors ✅ Fabric workspace automation working ✅ Purview collection creation working (cross-subscription) ⚠️ setup_fabric_private_link.ps1 requires manual workspace private link enablement (one-time step) This commit resolves all identified deployment blockers and successfully enables cross-subscription Purview integration for governance workflows. * feat: Add environment-based naming for Fabric workspace, domain, and Purview collection - Added environmentName parameter to main-orchestrator.bicep - Reads AZURE_ENV_NAME environment variable via readEnvironmentVariable() - Auto-generates workspace and domain names with environment suffix - Fabric workspace: workspace-{env} (e.g., workspace-dev102425g) - Fabric domain: datadomain-{env} (e.g., datadomain-dev102425g) - Purview collection inherits domain name (e.g., datadomain-dev102425g) - Updated outputs to use computed effectiveFabricWorkspaceName and effectiveDomainName - Cross-subscription Purview support maintained with subscription/RG parameters - Allows manual override by setting fabricWorkspaceName and domainName in bicepparam * feat: Add firewall rules for Power BI, Fabric, and Azure Portal access - Added rule collection group 'PowerBI-Fabric-Access' to firewall policy - Allow-PowerBI: *.powerbi.com, powerbi.microsoft.com (HTTP/HTTPS) - Allow-Fabric: *.fabric.microsoft.com, app.fabric.microsoft.com (HTTPS) - Allow-Analysis-Services: *.analysis.windows.net (HTTPS) - Allow-Azure-Portal: *.portal.azure.com, portal.azure.com, *.azure.com, *.management.azure.com (HTTPS) - Allow-Microsoft-Auth: *.login.microsoftonline.com, login.windows.net, login.microsoft.com, *.microsoftonline.com (HTTPS) This enables Jump VM users to access: - Power BI portal (app.powerbi.com) - Microsoft Fabric portal (app.fabric.microsoft.com) - Azure Portal (portal.azure.com) - Microsoft authentication services Rules are applied at firewall policy level in stage1-networking.bicep * feat: Complete firewall routing configuration for jumpbox subnet - Created route table (rt-firewall-{baseName}) with default route to firewall - Associated route table with jumpbox-subnet to force traffic through firewall - All outbound traffic from Jump VM now routes through Azure Firewall (192.168.0.132) - Added configure_firewall_routing.sh script for automated setup in future deployments This completes the secure network architecture: - Firewall rules allow Power BI, Fabric, Azure Portal, and auth domains - Route table forces all jumpbox traffic through firewall for inspection - Jump VM can now access portal.azure.com, app.powerbi.com, app.fabric.microsoft.com * fix: Enable DNS proxy on firewall policy for FQDN resolution - Added enableProxy: true to firewall policy configuration - DNS proxy is required for application rules with FQDN targets to work - Without DNS proxy, firewall cannot resolve domain names and defaults to deny - Applied fix retroactively via CLI: az network firewall policy update --enable-dns-proxy true This fixes the 'No rule matched' error when accessing: - portal.azure.com - app.powerbi.com - app.fabric.microsoft.com DNS proxy enables the firewall to resolve FQDNs in application rules and properly match traffic against the configured allow rules * WIP: Modular orchestrator approach - hitting 4MB ARM template limit * Use AI Landing Zone directly + Fabric capacity extension * Remove modular orchestrator files - using AI Landing Zone directly * Remove unnecessary preprovision scripts - using AI Landing Zone's scripts * Fix azure.yaml preprovision hooks format for azd 1.20+ * Fix infra path to point to deploy directory with Template Spec references * Make deploy_fabric_capacity.sh executable * Fix Fabric capacity name format - remove hyphens * Fix Fabric capacity SKU format - add tier field * Replace shell script with Bicep module for Fabric capacity deployment * Implement Fabric capacity deployment in main.bicep wrapper - Wrapper calls AI Landing Zone then deploys Fabric capacity in single template - All parameters exposed in main.bicepparam for full autonomy - Azure.yaml deploys from infra/ (wrapper) instead of AI Landing Zone directly * Fix OneLake SAMI auth and AI Foundry RBAC * Sync fabric deployment automation and docs * Document template spec deployment flow * refresh submodule * refactor: reorganize fabric automation scripts by workspace scope * Updates to several sections of automation code. Add FAQ to address common issues during development. These will go into the readme. Fabric private network.md added for guidance. * removal of old docs and direction * Updates and improvements to readme and fabric networking to ai search * updates to main and parameter naming * updates to scripts to resume paused fabric capacity when running post provisioning scripts * docs: overhaul README and consolidate documentation for v1.3 README Changes: - Adopt GSA (Global Solution Accelerator) format with header images - Update navigation to use pipe separators matching example repos - Use AI Landing Zone architecture diagram from submodule - Add git submodule clone instructions for smooth provisioning - Expand 'What You Get' section to showcase full platform scope - Update Supporting Documentation table with current links Documentation Consolidation: - Create DeploymentGuide.md consolidating all deployment options - Create deploy_app_from_foundry.md aligned with AI Foundry workflow - Create TRANSPARENCY_FAQ.md for responsible AI transparency Removed Outdated Docs (9 files): - github_actions_steps.md (stub placeholder) - github_code_spaces_steps.md (consolidated into DeploymentGuide) - local_environment_steps.md (consolidated into DeploymentGuide) - Dev_ContainerSteps.md (consolidated into DeploymentGuide) - transfer_project_connections.md (deprecated feature) - sample_app_setup.md (replaced with deploy_app_from_foundry.md) - Verify_Services_On_Network.md (referenced non-existent script) - add_additional_services.md (redundant with PARAMETER_GUIDE.md) - modify_deployed_models.md (redundant with PARAMETER_GUIDE.md) Fixed broken references across all remaining documentation files. * remove document about Fabric External environment * update Foundry name in readme * Clarify Purview is configured not provisioned * Correct documentation links * corrected bad link * Update to architecture drawing * sanitized parameter file * sanitize parameters and add virtualization script * sanitize the parameters * Updated all PowerShell automation scripts to use the OS temp directory for shared env/config files instead of hardcoded /tmp, so they work on Windows and Codespaces * README: Added a Windows shell note under the submodule section to call out that preprovision uses sh (use Git Bash/WSL or swap to the PowerShell hook). DeploymentGuide: Added a Windows-specific shell requirement in prerequisites (bash available, or switch to preprovision.ps1). Reinforced submodule init in Local Environment and added a Windows note about running azd from Bash/WSL or changing the hook. Noted that postprovision temp .env files are written to the OS temp directory—no need to create C:\tmp. * Removed the “Important: Keep environment-specific values local” block from the README. * Adds a single sentence under “Prerequisites” clarifying that if Fabric capacity deployment is enabled, you must supply at least one valid Fabric admin principal (UPN email or Entra object ID) via fabricCapacityAdmins * Emphasise needing Fabric Admin if provisioning Fabric Workspace = true * New note clarifying that if Fabric provisioning is enabled, the user running azd must have the Fabric Administrator role (or equivalent Fabric/Power BI tenant admin permissions). --------- Co-authored-by: Mike Swantek <mike.swantek@microsoft.com>
1 parent 6ed2592 commit e24bb86

File tree

159 files changed

+14850
-112091
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

159 files changed

+14850
-112091
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: AZD Template Validation
2+
on:
3+
workflow_dispatch:
4+
push:
5+
branches:
6+
- main
7+
8+
permissions:
9+
contents: read
10+
id-token: write
11+
pull-requests: write
12+
13+
jobs:
14+
template_validation:
15+
runs-on: ubuntu-latest
16+
name: azd template validation
17+
steps:
18+
- uses: actions/checkout@v4
19+
20+
- uses: microsoft/template-validation-action@Latest
21+
with:
22+
validateAzd: ${{ vars.TEMPLATE_VALIDATE_AZD }}
23+
useDevContainer: ${{ vars.TEMPLATE_USE_DEV_CONTAINER }}
24+
id: validation
25+
env:
26+
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
27+
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
28+
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
29+
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
30+
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
31+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
33+
- name: print result
34+
run: cat ${{ steps.validation.outputs.resultFile }}

.github/workflows/azure-dev.yml

Lines changed: 27 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,44 @@
1-
name: AZD Template Validation
2-
on:
1+
name: AZD Deployment
2+
on:
33
workflow_dispatch:
44
push:
55
branches:
66
- main
77

88
permissions:
9-
contents: read
109
id-token: write
11-
pull-requests: write
10+
contents: read
1211

1312
jobs:
14-
template_validation:
13+
build:
1514
runs-on: ubuntu-latest
16-
name: azd template validation
15+
env:
16+
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
17+
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
18+
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
19+
AZURE_RESOURCE_GROUP: ${{ vars.AZURE_RESOURCE_GROUP }}
20+
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
21+
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
22+
AZURE_USER_OBJECT_ID: ''
1723
steps:
18-
- uses: actions/checkout@v4
19-
20-
- name: Azure Login
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
- name: Install azd
27+
uses: Azure/setup-azd@v2
28+
- name: Azure Developer CLI Login
29+
run: |
30+
azd auth login `
31+
--client-id "$Env:AZURE_CLIENT_ID" `
32+
--federated-credential-provider "github" `
33+
--tenant-id "$Env:AZURE_TENANT_ID"
34+
shell: pwsh
35+
- name: Azure CLI Login
2136
uses: azure/login@v2
2237
with:
2338
client-id: ${{ vars.AZURE_CLIENT_ID }}
2439
tenant-id: ${{ vars.AZURE_TENANT_ID }}
2540
subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}
26-
27-
- name: Create Resource Group for Validation
28-
run: |
29-
ENV_NAME="${{ vars.AZURE_ENV_NAME }}"
30-
RG_NAME="rg-${ENV_NAME}"
31-
echo "Creating resource group for template validation: ${RG_NAME}"
32-
az group create \
33-
--name "${RG_NAME}" \
34-
--location "${{ vars.AZURE_LOCATION }}" \
35-
--tags "CreatedBy=GitHubActions"
36-
echo "Resource group ${RG_NAME} created successfully"
37-
38-
- uses: microsoft/template-validation-action@Latest
39-
with:
40-
validateAzd: ${{ vars.TEMPLATE_VALIDATE_AZD }}
41-
useDevContainer: ${{ vars.TEMPLATE_USE_DEV_CONTAINER }}
42-
validateTests: ${{ vars.AZD_VALIDATE_TESTS }}
43-
id: validation
41+
- name: Provision Infrastructure
42+
run: azd provision --no-prompt
4443
env:
45-
AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }}
46-
AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }}
47-
AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }}
48-
AZURE_ENV_NAME: ${{ vars.AZURE_ENV_NAME }}
49-
AZURE_LOCATION: ${{ vars.AZURE_LOCATION }}
50-
AZURE_RESOURCE_GROUP: rg-${{ vars.AZURE_ENV_NAME }}
51-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52-
# Set correct principal type for GitHub Actions ServicePrincipal
53-
AZURE_DEPLOYER_PRINCIPAL_TYPE: ServicePrincipal
54-
# Infrastructure parameter defaults for pipeline
55-
AZURE_ACR_ENABLED: 'false'
56-
AZURE_API_MANAGEMENT_ENABLED: 'false'
57-
AZURE_AI_CONTENT_SAFETY_ENABLED: 'false'
58-
AZURE_AI_DOC_INTELLIGENCE_ENABLED: 'false'
59-
AZURE_AI_LANGUAGE_ENABLED: 'false'
60-
AZURE_AI_SEARCH_ENABLED: 'true'
61-
AZURE_AI_SPEECH_ENABLED: 'false'
62-
AZURE_AI_TRANSLATOR_ENABLED: 'false'
63-
64-
AZURE_AI_VISION_ENABLED: 'false'
65-
AZURE_APP_SAMPLE_ENABLED: 'false'
66-
AZURE_COSMOS_DB_ENABLED: 'true'
67-
AZURE_NETWORK_ISOLATION: 'false'
68-
AZURE_SQL_SERVER_ENABLED: 'false'
69-
AZURE_AI_DEPLOYMENTS_LOCATION: ${{ vars.AZURE_LOCATION }}
70-
AZURE_DEV_COLLECT_TELEMETRY: ${{ vars.AZURE_DEV_COLLECT_TELEMETRY }}
71-
72-
73-
- name: print result
74-
run: cat ${{ steps.validation.outputs.resultFile }}
44+
AZD_INITIAL_ENVIRONMENT_CONFIG: ${{ secrets.AZD_INITIAL_ENVIRONMENT_CONFIG }}

.gitignore

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,15 @@
22
.vs
33
.venv
44
__pycache__
5+
6+
# Azure Developer CLI (azd)
7+
.azure/
8+
9+
# Local environment files
10+
.env
11+
.env.*
12+
!.env.example
13+
14+
# Local-only Bicep parameter overrides
15+
infra/*.local.bicepparam
16+
infra/*.local.bicepparam.json

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "submodules/ai-landing-zone"]
2+
path = submodules/ai-landing-zone
3+
url = https://github.com/Azure/AI-Landing-Zones.git

CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,36 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.3] - 2025-12-09
6+
### Added
7+
- Microsoft Fabric integration with automatic capacity creation and management
8+
- Microsoft Purview integration for governance and data cataloging
9+
- OneLake indexing pipeline connecting Fabric lakehouses to AI Search
10+
- Comprehensive post-provision automation (22 hooks for Fabric/Purview/Search setup)
11+
- New documentation: `deploy_app_from_foundry.md` for publishing apps from AI Foundry
12+
- New documentation: `TRANSPARENCY_FAQ.md` for responsible AI transparency
13+
- New documentation: `NewUserGuide.md` for first-time users
14+
- Header icons matching GSA standard format
15+
- Fabric private networking documentation
16+
17+
### Changed
18+
- README.md restructured to match Microsoft GSA (Global Solution Accelerator) format
19+
- DeploymentGuide.md consolidated with all deployment options in one place
20+
- Updated Azure Fabric CLI commands (`az fabric capacity` replaces deprecated `az powerbi embedded-capacity`)
21+
- Post-provision scripts now validate Fabric capacity state before execution
22+
- Navigation links use pipe separators matching other GSA repos
23+
24+
### Removed
25+
- `github_actions_steps.md` (stub placeholder)
26+
- `github_code_spaces_steps.md` (consolidated into DeploymentGuide.md)
27+
- `local_environment_steps.md` (consolidated into DeploymentGuide.md)
28+
- `Dev_ContainerSteps.md` (consolidated into DeploymentGuide.md)
29+
- `transfer_project_connections.md` (feature deprecated)
30+
- `sample_app_setup.md` (replaced with `deploy_app_from_foundry.md`)
31+
- `Verify_Services_On_Network.md` (referenced non-existent script)
32+
- `add_additional_services.md` (outdated, redundant with PARAMETER_GUIDE.md)
33+
- `modify_deployed_models.md` (outdated, redundant with PARAMETER_GUIDE.md)
34+
535
## [1.2] - 2025-05-13
636
### Added
737
- Add new project module leveraging the new cognitive services/projects type

0 commit comments

Comments
 (0)