Skip to content

Commit f56230e

Browse files
Merge branch 'main' into psl-waf-macaev3
2 parents 6b97493 + 96f6a36 commit f56230e

Some content is hidden

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

58 files changed

+5980
-3819
lines changed

.github/workflows/deploy-waf.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -109,13 +109,15 @@ jobs:
109109
--resource-group ${{ env.RESOURCE_GROUP_NAME }} \
110110
--template-file infra/main.bicep \
111111
--parameters \
112-
environmentName=${{ env.SOLUTION_PREFIX }} \
113-
useWafAlignedArchitecture=true \
114-
aiDeploymentsLocation='${{ env.AZURE_LOCATION }}' \
112+
solutionName=${{ env.SOLUTION_PREFIX }} \
113+
location="${{ env.AZURE_LOCATION }}" \
114+
azureAiServiceLocation='${{ env.AZURE_LOCATION }}' \
115115
gptModelCapacity=5 \
116-
virtualMachineConfiguration='{"adminUsername": "adminuser", "adminPassword": "P@ssw0rd1234"}' \
117-
logAnalyticsWorkspaceConfiguration='{"existingWorkspaceResourceId": ""}'
118-
116+
enableTelemetry=true \
117+
enableMonitoring=true \
118+
enablePrivateNetworking=true \
119+
enableScalability=true \
120+
119121
120122
- name: Send Notification on Failure
121123
if: failure()

.github/workflows/deploy.yml

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,19 +129,14 @@ jobs:
129129
--resource-group ${{ env.RESOURCE_GROUP_NAME }} \
130130
--template-file infra/main.bicep \
131131
--parameters \
132-
environmentName=${{ env.SOLUTION_PREFIX }} \
133-
solutionLocation="${{ env.AZURE_LOCATION }}" \
134-
modelDeploymentType="GlobalStandard" \
132+
solutionName=${{ env.SOLUTION_PREFIX }} \
133+
location="${{ env.AZURE_LOCATION }}" \
134+
gptModelDeploymentType="GlobalStandard" \
135135
gptModelName="gpt-4o" \
136136
gptModelVersion="2024-08-06" \
137137
imageTag="${IMAGE_TAG}" \
138-
useWafAlignedArchitecture=false \
139-
aiDeploymentsLocation='${{ env.AZURE_LOCATION }}' \
138+
azureAiServiceLocation='${{ env.AZURE_LOCATION }}' \
140139
gptModelCapacity=150 \
141-
logAnalyticsWorkspaceConfiguration='{"dataRetentionInDays": 30, "existingWorkspaceResourceId": ""}' \
142-
applicationInsightsConfiguration='{"retentionInDays": 30}' \
143-
virtualNetworkConfiguration='{"enabled": false}' \
144-
webServerFarmConfiguration='{"skuCapacity": 1, "skuName": "B2"}' \
145140
--output json
146141
147142
- name: Extract Web App and API App URLs

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ jobs:
5151
- name: Run tests with coverage
5252
if: env.skip_tests == 'false'
5353
run: |
54-
pytest --cov=. --cov-report=term-missing --cov-report=xml
54+
pytest --cov=. --cov-report=term-missing --cov-report=xml --ignore=tests/e2e-test/tests
5555
5656
- name: Skip coverage report if no tests
5757
if: env.skip_tests == 'true'

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,4 +460,7 @@ __pycache__/
460460
.azure
461461
.github/copilot-instructions.md
462462
# Ignore sample code folder
463-
data/sample_code/
463+
data/sample_code/
464+
# Bicep local files
465+
*.local*.bicepparam
466+
*.local*.parameters.json

docs/CustomizingAzdParameters.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ By default this template will use the environment name as the prefix to prevent
1919
| `AZURE_ENV_IMAGETAG` | string | `latest` | Docker image tag used for container deployments. |
2020
| `AZURE_ENV_ENABLE_TELEMETRY` | bool | `true` | Enables telemetry for monitoring and diagnostics. |
2121
| `AZURE_ENV_LOG_ANALYTICS_WORKSPACE_ID` | string | Guide to get your [Existing Workspace ID](/docs/re-use-log-analytics.md) | Set this if you want to reuse an existing Log Analytics Workspace instead of creating a new one. |
22+
| `AZURE_ENV_VM_ADMIN_USERNAME` | string | `take(newGuid(), 20)` | The administrator username for the virtual machine. |
23+
| `AZURE_ENV_VM_ADMIN_PASSWORD` | string | `newGuid()` | The administrator password for the virtual machine. |
2224
---
2325

2426
## How to Set a Parameter

docs/DeploymentGuide.md

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,42 +26,68 @@ Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
2626

2727
This will allow the scripts to run for the current session without permanently changing your system's policy.
2828

29+
### **Azure Developer CLI (azd) Requirement**
30+
31+
Ensure that you are using the latest version of the [Azure Developer CLI](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/overview).
32+
The `azd` version must be **1.18.0 or higher**.
33+
34+
Upgrade commands by OS:
35+
36+
* **Windows (using winget):**
37+
38+
```bash
39+
winget install microsoft.azd
40+
```
41+
42+
* **Linux (using apt):**
43+
44+
```bash
45+
curl -fsSL https://aka.ms/install-azd.sh | bash
46+
```
47+
48+
* **macOS (using Homebrew):**
49+
50+
```bash
51+
brew update && brew tap azure/azd && brew install azd
52+
```
53+
2954
## Deployment Options & Steps
3055

3156
### Sandbox or WAF Aligned Deployment Options
3257

3358
The [`infra`](../infra) folder of the Multi Agent Solution Accelerator contains the [`main.bicep`](../infra/main.bicep) Bicep script, which defines all Azure infrastructure components for this solution.
3459

35-
When running `azd up`, you’ll now be prompted to choose between a **WAF-aligned configuration** and a **sandbox configuration** using a simple selection:
60+
By default, the `azd up` command uses the [`main.parameters.json`](../infra/main.parameters.json) file to deploy the solution. This file is pre-configured for a **sandbox environment** — ideal for development and proof-of-concept scenarios, with minimal security and cost controls for rapid iteration.
3661

37-
- A **sandbox environment** — ideal for development and proof-of-concept scenarios, with minimal security and cost controls for rapid iteration.
62+
For **production deployments**, the repository also provides [`main.waf.parameters.json`](../infra/main.waf.parameters.json), which applies a [Well-Architected Framework (WAF) aligned](https://learn.microsoft.com/en-us/azure/well-architected/) configuration. This option enables additional Azure best practices for reliability, security, cost optimization, operational excellence, and performance efficiency, such as:
3863

39-
- A **production deployments environment**, which applies a [Well-Architected Framework (WAF) aligned](https://learn.microsoft.com/en-us/azure/well-architected/) configuration. This option enables additional Azure best practices for reliability, security, cost optimization, operational excellence, and performance efficiency, such as:
4064
- Enhanced network security (e.g., Network protection with private endpoints)
4165
- Stricter access controls and managed identities
4266
- Logging, monitoring, and diagnostics enabled by default
4367
- Resource tagging and cost management recommendations
4468

4569
**How to choose your deployment configuration:**
4670

47-
When prompted during `azd up`:
71+
* Use the default `main.parameters.json` file for a **sandbox/dev environment**
72+
* For a **WAF-aligned, production-ready deployment**, copy the contents of `main.waf.parameters.json` into `main.parameters.json` before running `azd up`
4873

49-
![useWAFAlignedArchitecture](images/macae_waf_prompt.png)
74+
---
5075

51-
- Select **`true`** to deploy a **WAF-aligned, production-ready environment**
52-
- Select **`false`** to deploy a **lightweight sandbox/dev environment**
76+
### VM Credentials Configuration
77+
78+
By default, the solution sets the VM administrator username and password from environment variables.
79+
If you do not configure these values, a randomly generated GUID will be used for both the username and password.
80+
81+
To set your own VM credentials before deployment, use:
82+
83+
```sh
84+
azd env set AZURE_ENV_VM_ADMIN_USERNAME <your-username>
85+
azd env set AZURE_ENV_VM_ADMIN_PASSWORD <your-password>
86+
```
5387

5488
> [!TIP]
5589
> Always review and adjust parameter values (such as region, capacity, security settings and log analytics workspace configuration) to match your organization’s requirements before deploying. For production, ensure you have sufficient quota and follow the principle of least privilege for all identities and role assignments.
5690
57-
> To reuse an existing Log Analytics workspace, update the existingWorkspaceResourceId field under the logAnalyticsWorkspaceConfiguration parameter in the .bicep file with the resource ID of your existing workspace.
58-
For example:
59-
```
60-
param logAnalyticsWorkspaceConfiguration = {
61-
dataRetentionInDays: 30
62-
existingWorkspaceResourceId: '/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.OperationalInsights/workspaces/<workspace-name>'
63-
}
64-
```
6591

6692
> [!IMPORTANT]
6793
> The WAF-aligned configuration is under active development. More Azure Well-Architected recommendations will be added in future updates.
@@ -219,6 +245,10 @@ Once you've opened the project in [Codespaces](#github-codespaces), [Dev Contain
219245

220246
7. If you are done trying out the application, you can delete the resources by running `azd down`.
221247

248+
249+
### 🛠️ Troubleshooting
250+
If you encounter any issues during the deployment process, please refer [troubleshooting](../docs/TroubleShootingSteps.md) document for detailed steps and solutions.
251+
222252
# Local setup
223253

224254
> **Note for macOS Developers**: If you are using macOS on Apple Silicon (ARM64) the DevContainer will **not** work. This is due to a limitation with the Azure Functions Core Tools (see [here](https://github.com/Azure/azure-functions-core-tools/issues/3112)).
@@ -324,12 +354,17 @@ The files for the dev container are located in `/.devcontainer/` folder.
324354
- Update the `.env` file with the required values from your Azure resource group in Azure Portal App Service environment variables.
325355
- Alternatively, if resources were
326356
provisioned using `azd provision` or `azd up`, a `.env` file is automatically generated in the `.azure/<env-name>/.env`
327-
file. To get your `<env-name>` run `azd env list` to see which env is default.
357+
file. You can copy the contents of this file into your backend `.env` file.
358+
359+
_**Note**: To get your `<env-name>` run `azd env list` to see which env is default._
328360
329361
6. **Fill in the `.env` file:**
330362
331363
- Use the output from the deployment or check the Azure Portal under "Deployments" in the resource group.
332364
- Make sure to set APP_ENV to "**dev**" in `.env` file.
365+
- For local development, make sure to include below env variables in the `.env`
366+
- `BACKEND_API_URL=http://localhost:8000`
367+
- `FRONTEND_SITE_NAME=http://127.0.0.1:3000` .
333368
334369
7. **(Optional) Set up a virtual environment:**
335370

docs/LocalDeployment.md

Lines changed: 0 additions & 180 deletions
This file was deleted.

0 commit comments

Comments
 (0)