diff --git a/docs/CustomizingAzdParameters.md b/docs/CustomizingAzdParameters.md index 579eee49..7728f4dc 100644 --- a/docs/CustomizingAzdParameters.md +++ b/docs/CustomizingAzdParameters.md @@ -34,4 +34,9 @@ azd env set AZURE_ENV_MODEL_CAPACITY '30' Change if the deployment should use a local build of the containers ```shell azd env set USE_LOCAL_BUILD 'false' +``` + +Set the Log Analytics Workspace Id if you need to reuse the existing workspace which is already existing +```shell +azd env set AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID '' ``` \ No newline at end of file diff --git a/docs/DeploymentGuide.md b/docs/DeploymentGuide.md index 30d3d66e..9e6334e2 100644 --- a/docs/DeploymentGuide.md +++ b/docs/DeploymentGuide.md @@ -119,6 +119,7 @@ When you start the deployment, most parameters will have **default values**, but | **Deployment Type** | Select from a drop-down list. | GlobalStandard | | **GPT Model** | Choose from **gpt-4o**. | gpt-4o | | **GPT Model Deployment Capacity** | Configure capacity for **GPT models**. | 30k | +| **Existing Log analytics workspace** | To reuse the existing Log analytics workspace Id. | | diff --git a/infra/container_app/deploy_container_app_env.bicep b/infra/container_app/deploy_container_app_env.bicep index e9102a3d..858f1f56 100644 --- a/infra/container_app/deploy_container_app_env.bicep +++ b/infra/container_app/deploy_container_app_env.bicep @@ -3,9 +3,11 @@ param containerEnvName string param location string param logAnalyticsWorkspaceName string +param logAnalyticsWorkspaceResourceGroup string resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = { name: logAnalyticsWorkspaceName + scope: resourceGroup(logAnalyticsWorkspaceResourceGroup) } resource containerRegistryReader 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = { diff --git a/infra/deploy_app_insights.bicep b/infra/deploy_app_insights.bicep index 8b95ff94..0a1c85b7 100644 --- a/infra/deploy_app_insights.bicep +++ b/infra/deploy_app_insights.bicep @@ -2,8 +2,18 @@ targetScope = 'resourceGroup' param applicationInsightsName string param logAnalyticsWorkspaceName string +param existingLogAnalyticsWorkspaceId string = '' -resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = { +var useExisting = !empty(existingLogAnalyticsWorkspaceId) +var existingLawResourceGroup = useExisting ? split(existingLogAnalyticsWorkspaceId, '/')[4] : '' +var existingLawName = useExisting ? split(existingLogAnalyticsWorkspaceId, '/')[8] : '' + +resource existingLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2020-08-01' existing = if (useExisting) { + name: existingLawName + scope: resourceGroup(existingLawResourceGroup) +} + +resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = if (!useExisting) { name: logAnalyticsWorkspaceName location: resourceGroup().location properties: any({ @@ -32,9 +42,10 @@ resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { publicNetworkAccessForIngestion: 'Enabled' publicNetworkAccessForQuery: 'Disabled' Request_Source: 'rest' - WorkspaceResourceId: logAnalyticsWorkspace.id + WorkspaceResourceId: useExisting ? existingLogAnalyticsWorkspace.id : logAnalyticsWorkspace.id } } output id string = applicationInsights.id -output logAnalyticsWorkspaceName string = logAnalyticsWorkspace.name +output logAnalyticsWorkspaceName string = useExisting ? existingLogAnalyticsWorkspace.name : logAnalyticsWorkspace.name +output logAnalyticsWorkspaceResourceGroup string = useExisting ? existingLawResourceGroup : resourceGroup().name diff --git a/infra/main.bicep b/infra/main.bicep index 8998f538..02d442d4 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -75,6 +75,9 @@ param maxReplicaContainerWeb int = 1 @description('Set this flag to true only if you are deplpoying from Local') param useLocalBuild string = 'false' +@description('Optional: Existing Log Analytics Workspace Resource ID') +param existingLogAnalyticsWorkspaceId string = '' + var containerImageEndPoint = 'cpscontainerreg.azurecr.io' var resourceGroupLocation = resourceGroup().location @@ -110,6 +113,7 @@ module kvault 'deploy_keyvault.bicep' = { module applicationInsights 'deploy_app_insights.bicep' = { name: 'deploy_app_insights' params: { + existingLogAnalyticsWorkspaceId: existingLogAnalyticsWorkspaceId applicationInsightsName: '${abbrs.managementGovernance.applicationInsights}${solutionPrefix}' logAnalyticsWorkspaceName: '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionPrefix}' } @@ -159,6 +163,7 @@ module containerAppEnv './container_app/deploy_container_app_env.bicep' = { containerEnvName: '${abbrs.containers.containerAppsEnvironment}${solutionPrefix}' location: secondaryLocation logAnalyticsWorkspaceName: applicationInsights.outputs.logAnalyticsWorkspaceName + logAnalyticsWorkspaceResourceGroup: applicationInsights.outputs.logAnalyticsWorkspaceResourceGroup } } diff --git a/infra/main.bicepparam b/infra/main.bicepparam index 2c955f4c..c7549d8b 100644 --- a/infra/main.bicepparam +++ b/infra/main.bicepparam @@ -6,3 +6,4 @@ param deploymentType = readEnvironmentVariable('AZURE_ENV_MODEL_DEPLOYMENT_TYPE' param gptModelName = readEnvironmentVariable('AZURE_ENV_MODEL_NAME', 'gpt-4o') param gptDeploymentCapacity = int(readEnvironmentVariable('AZURE_ENV_MODEL_CAPACITY', '30')) param useLocalBuild = readEnvironmentVariable('USE_LOCAL_BUILD', 'false') +param existingLogAnalyticsWorkspaceId = readEnvironmentVariable('AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID', '')