Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions .github/workflows/azure-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,20 @@ on:
# Set this to the mainline branch you are using
branches:
- main
paths-ignore:
- 'docs/**'
- 'decision-log/**'
- 'cicd/**'
- '*.md'
pull_request:
# Run when pull requests are opened or updated
branches:
- main
paths-ignore:
- 'docs/**'
- 'decision-log/**'
- 'cicd/**'
- '*.md'

# GitHub Actions workflow to deploy to Azure using azd
# Ensure only one deployment runs at a time to prevent conflicts
Expand All @@ -47,17 +57,17 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
with:
persist-credentials: false

- name: Install azd
uses: Azure/setup-azd@c495e71ba59e44bfaaac10a32c8ee90d191ca4a3 # v2.2.1
uses: Azure/setup-azd@c495e71ba59e44bfaaac10a32c8ee90d191ca4a3 # v2.2.1
with:
version: '1.20.0' # Specify your desired azd version here

- name: Setup Node.js
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
uses: actions/setup-node@395ad3262231945c25e8478fd5baf05154b1d79f # v6.1.0
with:
node-version: '18.x'

Expand All @@ -67,7 +77,7 @@ jobs:
terraform_version: 1.13.3

- name: Install TFLint
uses: terraform-linters/setup-tflint@4cb9feea73331a35b422df102992a03a44a3bb33 # v6.2.1
uses: terraform-linters/setup-tflint@4cb9feea73331a35b422df102992a03a44a3bb33 # v6.2.1
with:
tflint_version: v0.58.1
github_token: ${{ secrets.GITHUB_TOKEN }} # Used to avoid rate
Expand Down Expand Up @@ -121,7 +131,7 @@ jobs:
pac help

- name: Set Up Python
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # 6.1.0
with:
python-version: "3.x"

Expand Down Expand Up @@ -182,7 +192,7 @@ jobs:

azd provision --no-prompt

- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
- uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: success() || failure()
with:
name: sarif-reports
Expand Down Expand Up @@ -253,4 +263,4 @@ jobs:
--name "$OPENAI_RESOURCE_NAME" || echo "Resource may not be in soft-delete state or already purged"
else
echo "OpenAI resource information not found in environment outputs. Skipping purge."
fi
fi
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,14 @@ network security.
- Pre-configured backend setup for remote state storage.
- Documentation and examples for quick onboarding and usage.

## CAIRA Assets
This is one of several acceleration assets within the CAIRA (Composable AI Reference Architectures) suite.

| Asset | Purpose | What it offers | Link |
|-------|---------------|----------------|------------|
| **AI Foundry Acceleration** | For organizations building modern AI solutions in the cloud | • Faster time to value: Deploy enterprise AI solutions with minimal upfront investment using reliable accelerator components<br>• Enterprise-grade security and observability acceleration: Baseline configurations with private networking, security controls, and compliance patterns<br>• Infrastructure as Code: Repeatable, version-controlled deployments with composable Terraform modules for Azure AI Foundry and supporting infrastructure<br>• Agentic acceleration: Deploy and configure through natural language, with seamless agent communication | [aka.ms/CAIRA](https://github.com/microsoft/CAIRA) |
| **Copilot Studio + Azure AI Search Acceleration** | For customers building enterprise solutions involving the low-code platform Copilot Studio (Power Platform) | • Rapid provisioning: Deploy a full Copilot Studio + Azure AI Search environment<br>• Enterprise-ready baseline: Preconfigured networking (VNets, private endpoints) and secure authentication patterns<br>• CI/CD friendly: Modular Terraform templates for repeatable, automated deployments<br>• Faster time-to-value: Move from proof-of-concept to production quickly and confidently<br>• Extensible architecture: Supports bring-your-own networking and ALM patterns for dev/test/prod environments | This repository |

## Architecture

This enterprise-ready architecture demonstrates how to securely connect Copilot Studio with Azure AI Search through a private virtual network infrastructure. The solution focuses on data security, network isolation, and compliance with enterprise governance policies.
Expand Down
2 changes: 0 additions & 2 deletions infra/modules/copilot_studio/power_platform_core.tf
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,5 @@ resource "powerplatform_managed_environment" "this" {
max_limit_user_sharing = var.power_platform_managed_environment.max_limit_user_sharing
solution_checker_mode = var.power_platform_managed_environment.solution_checker_mode
suppress_validation_emails = var.power_platform_managed_environment.suppress_validation_emails
maker_onboarding_markdown = var.power_platform_managed_environment.maker_onboarding_markdown
maker_onboarding_url = var.power_platform_managed_environment.maker_onboarding_url
}

4 changes: 2 additions & 2 deletions infra/modules/copilot_studio/terraform.tf
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ terraform {
}
azurerm = {
source = "hashicorp/azurerm"
version = "4.55.0"
version = "4.56.0"
}
modtm = {
source = "Azure/modtm"
version = "0.3.5"
}
powerplatform = {
source = "microsoft/power-platform"
version = "3.9.1"
version = "4.0.0"
}
random = {
source = "hashicorp/random"
Expand Down
6 changes: 1 addition & 5 deletions infra/modules/copilot_studio/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ variable "power_platform_managed_environment" {
max_limit_user_sharing = number
solution_checker_mode = string
suppress_validation_emails = bool
maker_onboarding_markdown = string
maker_onboarding_url = string
})
description = <<DESCRIPTION
- `is_usage_insights_disabled`: Whether usage insights are disabled for the Power Platform managed environment.
Expand All @@ -67,9 +65,7 @@ variable "power_platform_managed_environment" {
- `max_limit_user_sharing`: The maximum limit for user sharing in the Power Platform managed environment.
- `solution_checker_mode`: The solution checker mode for the Power Platform managed environment.
- `suppress_validation_emails`: Whether validation emails are suppressed for the Power Platform managed environment.
- `maker_onboarding_markdown`: The onboarding markdown for makers in the Power Platform managed environment.
- `maker_onboarding_url`: The onboarding URL for makers in the Power Platform managed environment.
DESCRIPTION
DESCRIPTION
}

variable "primary_subnet_id" {
Expand Down
4 changes: 2 additions & 2 deletions infra/provider.tf
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,15 @@ terraform {
}
azurerm = {
source = "hashicorp/azurerm"
version = "4.55.0"
version = "4.56.0"
}
modtm = {
source = "Azure/modtm"
version = "~> 0.3.2"
}
powerplatform = {
source = "microsoft/power-platform"
version = "3.9.1"
version = "4.0.0"
}
random = {
source = "hashicorp/random"
Expand Down
4 changes: 0 additions & 4 deletions infra/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -360,8 +360,6 @@ variable "power_platform_managed_environment" {
max_limit_user_sharing = number
solution_checker_mode = string
suppress_validation_emails = bool
maker_onboarding_markdown = string
maker_onboarding_url = string
})
default = {
id = "" # Optional. If provided, the module will attempt to use the existing managed environment. If left blank, a new environment will be created.
Expand All @@ -371,8 +369,6 @@ variable "power_platform_managed_environment" {
max_limit_user_sharing = 0
solution_checker_mode = "None"
suppress_validation_emails = false
maker_onboarding_markdown = ""
maker_onboarding_url = ""
}
description = "Configuration for the Power Platform managed environment"
}
Expand Down