К основному содержанию
правило официальный · GitHub

azure-verified-modules-bicep — правило для GitHub Copilot

Направляет GitHub Copilot при создании и ревью кода на Bicep. Правило заставляет ИИ использовать готовые модули Azure Verified Modules вместо сырых ресурсов.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/azure-verified-modules-bicep.instructions.md
Открыть на GitHub

Что делает azure-verified-modules-bicep

Правило применяется к файлам с масками **/*.bicep и **/*.bicepparam. Оно задаёт стандарты поиска и внедрения проверенных модулей из Bicep Public Registry через реестр br/public:avm/res/{service}/{resource}:{version}. Если готового модуля AVM нет, генератор переключается на нативные декларации с последней стабильной версией API.

В инструкциях закреплены строгие требования к синтаксису и именованию. Код обязан использовать lowerCamelCase и символические имена без суффикса name. Связи между модулями строятся напрямую через символические имена, без вызовов reference() или устаревшего свойства dependsOn. Это упрощает чтение шаблонов.

Любые правки требуют обязательной сборки шаблонов через az bicep build --file main.bicep. Инструкция запрещает отдавать секреты в блоке outputs и требует синхронно обновлять файлы .bicepparam при смене параметров. Без установленного Azure CLI с компонентом Bicep проверить итоговую компиляцию не выйдет.

Какие задачи решает

  • Подключить проверенный модуль учётной записи хранения из реестра AVM
  • Настроить символические связи между ресурсами Bicep без явного dependsOn
  • Синхронизировать параметры в файлах .bicepparam с шаблонами .bicep
  • Защитить выходы шаблона от случайной публикации секретов и ключей

Примеры запросов агенту

  • Добавь модуль storage-account из AVM в наш main.bicep с фиксацией версии
  • Проверь файл network.bicep на соответствие соглашениям AVM и обнови параметры в .bicepparam
  • Свяжи виртуальную сеть с подсетью через символические имена без использования dependsOn

Как установить azure-verified-modules-bicep

Вручную: положить файлы

.github/instructions/azure-verified-modules-bicep.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Вопросы о azure-verified-modules-bicep

Как установить azure-verified-modules-bicep в GitHub Copilot?

Сохраните файл инструкций по пути .github/instructions/azure-verified-modules-bicep.instructions.md. Copilot начнёт автоматически применять правила к файлам **/*.bicep и **/*.bicepparam.

Что делает правило azure-verified-modules-bicep?

Оно учит Copilot использовать модули Azure Verified Modules с точной фиксацией версий. Правило также следит за camelCase-именованием, запрещает секреты в outputs и требует валидацию через CLI.

Что делать, если нужного ресурса нет в каталоге AVM?

Правило предписывает использовать стандартные декларации ресурсов Bicep с актуальной стабильной версией API, если соответствующий модуль AVM пока отсутствует в реестре.

Исходный текст

azure-verified-modules-bicep.instructions.md · MIT
---
description: 'Azure Verified Modules (AVM) and Bicep'
applyTo: '**/*.bicep, **/*.bicepparam'
---

# Azure Verified Modules (AVM) Bicep

## Overview

Azure Verified Modules (AVM) are pre-built, tested, and validated Bicep modules that follow Azure best practices. Use these modules to create, update, or review Azure Infrastructure as Code (IaC) with confidence.

## Module Discovery

### Bicep Public Registry

- Search for modules: `br/public:avm/res/{service}/{resource}:{version}`
- Browse available modules: `https://github.com/Azure/bicep-registry-modules/tree/main/avm/res`
- Example: `br/public:avm/res/storage/storage-account:0.30.0`

### Official AVM Index

- **Bicep Resource Modules**: `https://raw.githubusercontent.com/Azure/Azure-Verified-Modules/refs/heads/main/docs/static/module-indexes/BicepResourceModules.csv`
- **Bicep Pattern Modules**: `https://raw.githubusercontent.com/Azure/Azure-Verified-Modules/refs/heads/main/docs/static/module-indexes/BicepPatternModules.csv`

### Module Documentation

- **GitHub Repository**: `https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/{service}/{resource}`
- **README**: Each module contains comprehensive documentation with examples

## Module Usage

### From Examples

1. Review module README in `https://github.com/Azure/bicep-registry-modules/tree/main/avm/res/{service}/{resource}`
2. Copy example code from module documentation
3. Reference module using `br/public:avm/res/{service}/{resource}:{version}`
4. Configure required and optional parameters

### Example Usage

```bicep
module storageAccount 'br/public:avm/res/storage/storage-account:0.30.0' = {
  name: 'storage-account-deployment'
  scope: resourceGroup()
  params: {
    name: storageAccountName
    location: location
    skuName: 'Standard_LRS'
    tags: tags
  }
}
```

### When AVM Module Not Available

If no AVM module exists for a resource type, use native Bicep resource declarations with latest stable API version.

## Naming Conventions

### Module References

- **Resource Modules**: `br/public:avm/res/{service}/{resource}:{version}`
- **Pattern Modules**: `br/public:avm/ptn/{pattern}:{version}`
- Example: `br/public:avm/res/network/virtual-network:0.7.2`

### Symbolic Names

- Use lowerCamelCase for all names (variables, parameters, resources, modules)
- Use resource type descriptive names (e.g., `storageAccount` not `storageAccountName`)
- Avoid 'name' suffix in symbolic names as they represent the resource, not the resource's name
- Avoid distinguishing variables and parameters by suffixes

## Version Management

### Version Pinning Best Practices

- Always pin to specific module versions: `:{version}`
- Use semantic versioning (e.g., `:0.30.0`)
- Review module changelog before upgrading
- Test version upgrades in non-production environments first

## Development Best Practices

### Module Discovery and Usage

- ✅ **Always** check for existing AVM modules before creating raw resources
- ✅ **Review** module documentation and examples before implementation
- ✅ **Pin** module versions explicitly
- ✅ **Use** types from modules when available (import types from module)
- ✅ **Prefer** AVM modules over raw resource declarations

### Code Structure

- ✅ **Declare** parameters at top of file with `@sys.description()` decorators
- ✅ **Specify** `@minLength()` and `@maxLength()` for naming parameters
- ✅ **Use** `@allowed()` decorator sparingly to avoid blocking valid deployments
- ✅ **Set** default values safe for test environments (low-cost SKUs)
- ✅ **Use** variables for complex expressions instead of embedding in resource properties
- ✅ **Leverage** `loadJsonContent()` for external configuration files

### Resource References

- ✅ **Use** symbolic names for references (e.g., `storageAccount.id`) not `reference()` or `resourceId()`
- ✅ **Create** dependencies through symbolic names, not explicit `dependsOn`
- ✅ **Use** `existing` keyword for accessing properties from other resources
- ✅ **Access** module outputs via dot notation (e.g., `storageAccount.outputs.resourceId`)

### Resource Naming

- ✅ **Use** `uniqueString()` with meaningful prefixes for unique names
- ✅ **Add** prefixes since some resources don't allow names starting with numbers
- ✅ **Respect** resource-specific naming constraints (length, characters)

### Child Resources

- ✅ **Avoid** excessive nesting of child resources
- ✅ **Use** `parent` property or nesting instead of constructing names manually

### Security

- ❌ **Never** include secrets or keys in outputs
- ✅ **Use** resource properties directly in outputs (e.g., `storageAccount.outputs.primaryBlobEndpoint`)
- ✅ **Enable** managed identities where possible
- ✅ **Disable** public access when network isolation is enabled

### Types

- ✅ **Import** types from modules when available: `import { deploymentType } from './module.bicep'`
- ✅ **Use** user-defined types for complex parameter structures
- ✅ **Leverage** type inference for variables

### Documentation

- ✅ **Include** helpful `//` comments for complex logic
- ✅ **Use** `@sys.description()` on all parameters with clear explanations
- ✅ **Document** non-obvious design decisions

## Validation Requirements

### Build Validation (MANDATORY)

After any changes to Bicep files, run the following commands to ensure all files build successfully:

```shell
# Ensure Bicep CLI is up to date
az bicep upgrade

# Build and validate changed Bicep files
az bicep build --file main.bicep
```

### Bicep Parameter Files

- ✅ **Always** update accompanying `*.bicepparam` files when modifying `*.bicep` files
- ✅ **Validate** parameter files match current parameter definitions
- ✅ **Test** deployments with parameter files before committing

## Tool Integration

### Use Available Tools

- **Schema Information**: Use `azure_get_schema_for_Bicep` for resource schemas
- **Deployment Guidance**: Use `azure_get_deployment_best_practices` tool
- **Service Documentation**: Use `microsoft.docs.mcp` for Azure service-specific guidance

### GitHub Copilot Integration

When working with Bicep:

1. Check for existing AVM modules before creating resources
2. Use official module examples as starting points
3. Run `az bicep build` after all changes
4. Update accompanying `.bicepparam` files
5. Document customizations or deviations from examples

## Troubleshooting

### Common Issues

1. **Module Version**: Always specify exact version in module reference
2. **Missing Dependencies**: Ensure resources are created before dependent modules
3. **Validation Failures**: Run `az bicep build` to identify syntax/type errors
4. **Parameter Files**: Ensure `.bicepparam` files are updated when parameters change

### Support Resources

- **AVM Documentation**: `https://azure.github.io/Azure-Verified-Modules/`
- **Bicep Registry**: `https://github.com/Azure/bicep-registry-modules`
- **Bicep Documentation**: `https://learn.microsoft.com/azure/azure-resource-manager/bicep/`
- **Best Practices**: `https://learn.microsoft.com/azure/azure-resource-manager/bicep/best-practices`

## Compliance Checklist

Before submitting any Bicep code:

- [ ] AVM modules used where available
- [ ] Module versions are pinned
- [ ] Code builds successfully (`az bicep build`)
- [ ] Accompanying `.bicepparam` files updated
- [ ] `@sys.description()` on all parameters
- [ ] Symbolic names used for references
- [ ] No secrets in outputs
- [ ] Types imported/defined where appropriate
- [ ] Comments added for complex logic
- [ ] Follows lowerCamelCase naming convention

© github · MIT · github/awesome-copilot

Похожие правила IDE

Все правила IDE по теме «Облака: AWS, Azure, GCP» →

Из того же набора732

Весь набор →
clojure Правило настраивает GitHub Copilot на REPL-ориентированную разработку на Clojure через плагин Calva и выравнивание скобок. ★ 40 418звёзд репо centos-linux Правило задаёт подход к администрированию CentOS: пакеты, systemd, firewalld и SELinux. Пригодится для команд, скриптов и документации. ★ 40 418звёзд репо blazor Задаёт стандарты вёрстки Razor-компонентов, внедрения зависимостей, кэширования и управления состоянием в Blazor для GitHub Copilot. ★ 40 418звёзд репо bicep-code-best-practices Правило задаёт рекомендации для Bicep-файлов: от имён параметров до ссылок на ресурсы и работы с секретами. Помогает Copilot придерживаться единого стиля при написании инфраструктурного кода. ★ 40 418звёзд репо azure-naming Правило заставляет GitHub Copilot называть Azure-ресурсы по Microsoft CAF: префикс типа, workload, окружение, регион, номер экземпляра. ★ 40 418звёзд репо azure-logic-apps-power-automate Правило для GitHub Copilot, которое подсказывает, как писать JSON-определения Azure Logic Apps и Power Automate: триггеры, действия, обработка ошибок. ★ 40 418звёзд репо azure-iot-edge-architecture Обязывает сверять архитектуру с документацией Azure IoT Edge перед выдачей рекомендаций. Действует в файлах Bicep, Terraform и документах по IoT. ★ 40 418звёзд репо azure-functions-typescript Правило задаёт Copilot соглашения для TypeScript API на Azure Functions: от асинхронного кода до структуры файлов функций. При изменении API оно напоминает обновить OpenAPI-схему и README.md. ★ 40 418звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой