|
| 1 | +# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2 |
| 2 | +# |
| 3 | +# Backend Development Configuration Sample for .NET Engineers |
| 4 | +# ============================================= |
| 5 | +# |
| 6 | +# Purpose: |
| 7 | +# This DSC configuration installs essential tools for Azure backend development including: |
| 8 | +# - Source control tools (GitHub Desktop) |
| 9 | +# - Azure command-line tools (CLI, AZD, Bicep) |
| 10 | +# - Local development emulators for Azure services |
| 11 | +# |
| 12 | +# Best Practices: |
| 13 | +# - All tools are installed via WinGet for consistent versioning |
| 14 | +# - Dependencies are explicitly declared to ensure proper installation order |
| 15 | +# - Tools are grouped logically by purpose |
| 16 | +# - Configuration should be version controlled and tested in CI/CD pipelines |
| 17 | +# - Regular updates to ensure latest security patches and features |
| 18 | +# - Separation of development tools from production configurations |
| 19 | +# |
| 20 | +properties: |
| 21 | + configurationVersion: "0.2.0" |
| 22 | + resources: |
| 23 | + #---------------------------------------------- |
| 24 | + # Azure Command-Line Tools |
| 25 | + #---------------------------------------------- |
| 26 | + # Resource: Azure CLI |
| 27 | + # Azure CLI is the foundation for Azure management and serves as a dependency for other Azure tools. |
| 28 | + # It provides command-line access to nearly all Azure service operations. |
| 29 | + # |
| 30 | + # Key Azure integration points: |
| 31 | + # - Unified authentication with Microsoft Entra ID (formerly Azure AD) |
| 32 | + # - Support for service principals and managed identities |
| 33 | + # - JSON-based output for automation and scripting |
| 34 | + # - Cross-platform compatibility for consistent workflows |
| 35 | + # |
| 36 | + # Security best practices: |
| 37 | + # - Use 'az login --tenant' to explicitly specify tenants |
| 38 | + # - Leverage managed identities where available |
| 39 | + # - Apply RBAC with principle of least privilege |
| 40 | + # - Use service principals with certificate-based auth for automation |
| 41 | + # - Regularly update CLI using 'az upgrade' command |
| 42 | + # - Avoid storing credentials in CLI cache in shared environments |
| 43 | + # - Configure CLI to use your organization's approved proxy if required |
| 44 | + # |
| 45 | + # Common development scenarios: |
| 46 | + # - Resource provisioning via templates and scripts |
| 47 | + # - Querying resource status and configurations |
| 48 | + # - Integrated deployment workflows with CI/CD |
| 49 | + # - Management of secrets and connection strings |
| 50 | + # |
| 51 | + # DSC-specific notes: |
| 52 | + # - WinGet ensures automatic updates to secure versions |
| 53 | + # - Installation is idempotent and will not reinstall if present |
| 54 | + # - Consider adding environment PATH validation during configuration testing |
| 55 | + # |
| 56 | + # Reference: https://learn.microsoft.com/en-us/cli/azure/ |
| 57 | + - resource: Microsoft.WinGet.DSC/WinGetPackage |
| 58 | + id: Microsoft.AzureCLI |
| 59 | + directives: |
| 60 | + allowPrerelease: true |
| 61 | + description: Install Azure CLI for managing Azure resources from the command line |
| 62 | + settings: |
| 63 | + id: Microsoft.AzureCLI |
| 64 | + |
| 65 | + # Resource: Azure Developer CLI (azd) |
| 66 | + # Azure Developer CLI (azd) simplifies application development workflow with templates |
| 67 | + # and integrated deployment capabilities. |
| 68 | + # |
| 69 | + # Key Azure integration points: |
| 70 | + # - End-to-end application development lifecycle management |
| 71 | + # - Built-in templates for common Azure architectural patterns |
| 72 | + # - Automated environment provisioning with infrastructure as code |
| 73 | + # - Integration with GitHub Actions and Azure DevOps for CI/CD |
| 74 | + # - Application monitoring and logging setup |
| 75 | + # |
| 76 | + # Development best practices: |
| 77 | + # - Use environment variables for secrets ('azd env set') |
| 78 | + # - Leverage service templates for consistent architecture |
| 79 | + # - Implement standardized application structures |
| 80 | + # - Follow Azure landing zone principles for environments |
| 81 | + # - Store azd environment configurations in version control |
| 82 | + # - Use azd pipeline integration for repeatable deployments |
| 83 | + # - Include .env.template file but exclude .env files from source control |
| 84 | + # |
| 85 | + # Common development scenarios: |
| 86 | + # - Setting up complete development environments |
| 87 | + # - Implementing production-ready services with best practices |
| 88 | + # - Consistent local-to-cloud development experience |
| 89 | + # - Orchestrating multi-service deployments |
| 90 | + # |
| 91 | + # DSC-specific notes: |
| 92 | + # - Dependency on Azure CLI is explicitly declared |
| 93 | + # - Installation validates presence of required prerequisites |
| 94 | + # - Consider adding post-install validation of azd version |
| 95 | + # |
| 96 | + # Reference: https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/ |
| 97 | + - resource: Microsoft.WinGet.DSC/WinGetPackage |
| 98 | + id: Microsoft.Azd |
| 99 | + directives: |
| 100 | + allowPrerelease: true |
| 101 | + description: Install Azure Developer CLI (azd) for end-to-end application development |
| 102 | + settings: |
| 103 | + id: Microsoft.Azd |
| 104 | + dependsOn: |
| 105 | + - Microsoft.AzureCLI # AZD requires Azure CLI to function properly |
| 106 | + |
| 107 | + # Resource: Bicep CLI |
| 108 | + # Bicep provides a domain-specific language for deploying Azure resources |
| 109 | + # with improved syntax over ARM templates. |
| 110 | + # |
| 111 | + # Key Azure integration points: |
| 112 | + # - Native integration with Azure Resource Manager |
| 113 | + # - Support for all Azure resource types and apiVersions |
| 114 | + # - Resource visualization capabilities |
| 115 | + # - Module composition for reusable infrastructure |
| 116 | + # - Built-in functions for dynamic deployments |
| 117 | + # |
| 118 | + # IaC best practices: |
| 119 | + # - Use modules for reusable components |
| 120 | + # - Implement parameterization for environment flexibility |
| 121 | + # - Apply Azure Policy as Code for governance |
| 122 | + # - Use symbolic references instead of string manipulation |
| 123 | + # - Implement deployment validation with 'what-if' |
| 124 | + # - Structure Bicep modules with clear separation of concerns |
| 125 | + # - Validate Bicep files with 'bicep build' before deployment |
| 126 | + # - Use linting tools to enforce conventions and best practices |
| 127 | + # - Test deployments in isolation before integrating |
| 128 | + # |
| 129 | + # Common development scenarios: |
| 130 | + # - Defining infrastructure as code for Azure environments |
| 131 | + # - Creating reusable infrastructure modules |
| 132 | + # - Setting up complex multi-resource deployments |
| 133 | + # - Implementing infrastructure governance |
| 134 | + # |
| 135 | + # DSC-specific notes: |
| 136 | + # - Bicep CLI is installed via Azure CLI extension |
| 137 | + # - Installation updates to latest version automatically |
| 138 | + # - Consider adding VS Code extension for Bicep in developer environments |
| 139 | + # |
| 140 | + # Reference: https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/ |
| 141 | + - resource: Microsoft.WinGet.DSC/WinGetPackage |
| 142 | + id: Microsoft.Bicep |
| 143 | + directives: |
| 144 | + allowPrerelease: true |
| 145 | + description: Install Bicep CLI for Infrastructure as Code development on Azure |
| 146 | + settings: |
| 147 | + id: Microsoft.Bicep |
| 148 | + dependsOn: |
| 149 | + - Microsoft.AzureCLI # Bicep extensions use Azure CLI for deployment |
| 150 | + |
| 151 | + #---------------------------------------------- |
| 152 | + # Local Development Emulators |
| 153 | + #---------------------------------------------- |
| 154 | + # Resource: Azure Storage Emulator |
| 155 | + # Azure Storage Emulator provides a local environment for testing Azure Storage applications |
| 156 | + # without requiring an Azure subscription for development. |
| 157 | + # |
| 158 | + # Key Azure integration points: |
| 159 | + # - Local emulation of Blob, Queue, and Table storage |
| 160 | + # - Development connection string compatibility with Azure Storage |
| 161 | + # - Support for Azure Storage SDK integration |
| 162 | + # - Local debugging of storage-dependent applications |
| 163 | + # - Reduced development costs by minimizing cloud resource usage |
| 164 | + # |
| 165 | + # Development best practices: |
| 166 | + # - Use consistent connection strings between local and cloud |
| 167 | + # - Validate local operations match cloud behavior |
| 168 | + # - Implement proper exception handling for both environments |
| 169 | + # - Test with both emulator and actual Azure resources before deployment |
| 170 | + # - Create automated tests that work with both environments |
| 171 | + # - Consider using Azurite (newer emulator) for feature parity |
| 172 | + # - Configure proper data persistence for development data |
| 173 | + # - Document how to initialize the emulator in your project |
| 174 | + # |
| 175 | + # Common development scenarios: |
| 176 | + # - Building applications using Azure Storage |
| 177 | + # - Performing rapid iterative development |
| 178 | + # - Unit and integration testing without cloud dependencies |
| 179 | + # - Offline development scenarios |
| 180 | + # - Cost optimization during development phases |
| 181 | + # |
| 182 | + # DSC-specific notes: |
| 183 | + # - Installation may require administrator privileges |
| 184 | + # - Consider validating emulator is running after installation |
| 185 | + # - May need to configure firewall exceptions |
| 186 | + # - Check SQL Server dependency is met (LocalDB) |
| 187 | + # |
| 188 | + # Reference: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-emulator |
| 189 | + - resource: Microsoft.WinGet.DSC/WinGetPackage |
| 190 | + id: Microsoft.Azure.StorageEmulator |
| 191 | + directives: |
| 192 | + allowPrerelease: true |
| 193 | + description: Install Azure Storage Emulator for local development |
| 194 | + settings: |
| 195 | + id: Microsoft.Azure.StorageEmulator |
0 commit comments