Azure / ALZ-Bicep

This repository contains the Azure Landing Zones (ALZ) Bicep modules that help deliver and deploy the Azure Landing Zone conceptual architecture in a modular approach. https://aka.ms/alz/docs
MIT License
727 stars 484 forks source link

Feedback Request - AVM Integration and Accelerator Ehancements #791

Open oZakari opened 3 weeks ago

oZakari commented 3 weeks ago

Let us know the feedback or general question

Overview

We're currently evaluating the future of ALZ-Bicep and would like to hear your input, before we make any decisions. We have several ideas up for consideration, and we're looking forward to your feedback on which proposals are most sought after. Or maybe there is something we have missed that you have been thinking about, let us know!

[!IMPORTANT] Please add any additional comments or scenarios you would like to discuss either using the comment section below. Looking forward to hearing from you all!

Proposal - Utilize Azure Verified Modules

We're considering migrating towards utilizing AVM into the ALZ Bicep framework to replace the existing ALZ-Bicep built and maintained modules, where possible and appropriate.

[!NOTE] There will still be some modules we need to maintain as the ALZ Bicep team, but these will be published as AVM modules also.

What This Means for ALZ-Bicep?

Put very simply, all ALZ Bicep modules will be deprecated and instead a new version of ALZ Bicep will be released that will be built solely of AVM Bicep modules (Resource & Pattern). The ALZ Bicep repo will transition to become the home of the accelerator providing examples and reference code bases of how to deploy the various ALZ reference architectures (Contoso (Virtual WAN), Adventure Works (Hub & Spoke), etc.)

Transition Plan: We are planning to transition all modules to be AVM modules

Benefits for You (Consumers)

Current Architecture

flowchart TD
    subgraph ALZ-Bicep Maintained Modules
        Management_Group_Module --- Custom_Policy_Definitions_Module
        Custom_Policy_Definitions_Module --- Custom_Policy_Exemptions_Module
        Custom_Policy_Exemptions_Module --- Custom_RBAC_Role_Definitions_Module
        Custom_RBAC_Role_Definitions_Module --- Logging_and_Security_Module
        Logging_and_Security_Module --- MG_Diagnostic_Settings_Module
        MG_Diagnostic_Settings_Module --- Hub_Networking_Module
        Hub_Networking_Module --- RBAC_Role_Assignments_Module
        RBAC_Role_Assignments_Module --- Subscription_Placement_Module
        Subscription_Placement_Module --- Policy_Assignments_Module
        Policy_Assignments_Module --- Corp_Connected_Spoke_Networking_Module
    end

Proposed AVM Integration

flowchart TD
    subgraph "AVM Maintained Modules (Already exist unless stated)"

        subgraph Governance Modules
            mg["Management Groups (inc. Diag Settings) <br>(avm/res/management/management-group)"]
            subplacement["Subscription Placement <br> *Requires creation/development*"]
            alzpoldef["ALZ Custom Policy Definitions & Initiatives <BR> *Pattern requires creation/development*"]
            ownpoldef["Custom Policy Definitions & Initiatives <BR> *Resource/Pattern requires creation/development*"]
            ownpolexm["Custom Policy Exemptions <BR> *Pattern requires creation/development*"]
            alzpolasi["ALZ Default Policy Assignments <BR> *Pattern requires creation/development*"]
            ownpolasi["Policy Assignments <BR> (avm/ptn/authorization/policy-assignment)"]
            alzroledef["ALZ Custom Role Definitions <BR> *Resource/Pattern requires creation/development*"]
            ownroledef["Custom Role Definitions <BR> *Resource/Pattern requires creation/development*"]
            roleasi["Role Assignments <BR> (avm/ptn/authorization/role-assignment)"]
        end

        subgraph "Logging & Monitoring Modules"
            law["Log Analytics Workspace <BR> (avm/res/operational-insights/workspace)"]
            lawsol["Log Analytics Workspace Solution <BR> (avm/res/operational-insights/solution)"]
        end

        subgraph Hub Networking Replacement Modules
            vnet["Virtual Network <br> (avm/res/network/virtual-network)"]
            fw["Azure Firewall <br> (avm/res/network/azure-firewall)"]
            fwp["Azure Firewall Policy <br> (avm/res/network/firewall-policy)"]
            pdnszones["Private Link Private DNS Zones <br> (avm/ptn/network/private-link-private-dns-zones) <br> *Under Development*"]
            vng["VPN/ExpressRoute Gateway <br> (avm/res/network/virtual-network-gateway)"]
            bst["Azure Bastion <br> (avm/res/network/bastion-host)"]
        end

        subgraph VWAN Networking Replacement Modules
            vwfw["Azure Firewall <br> (avm/res/network/azure-firewall)"]
            vwpdnszones["Private Link Private DNS Zones <br> (avm/ptn/network/private-link-private-dns-zones) <br> *Under Development*"]
            vwvpnvng["VPN Gateway <br> (avm/res/network/vpn-gateway)"]
            vwexrvng["ExpressRoute Gateway <br> (avm/res/network/express-route-gateway)"]
            vw["Virtual WAN<br> (avm/res/network/virtual-wan)"]
            vwhub["Virtual WAN Hub<br> (avm/res/network/virtual-hub)"]
        end
    end

Proposal - Provide Different and/or More Complex Deployment Scenarios within the Accelerator

Call to action

Thanks for getting this far 😂 Please do leave your comments and questions below to help us shape the future of ALZ Bicep

Code of Conduct

picccard commented 2 weeks ago

Looks looks promising! 💯

The proposed AVM integration does not mention a module for policy exemptions, this was added recently in #762. This module would also be labeled Pattern requires creation/development

oZakari commented 2 weeks ago

Looks looks promising! 💯

The proposed AVM integration does not mention a module for policy exemptions, this was added recently in #762. This module would also be labeled Pattern requires creation/development

Good callout @picccard, have updated the diagrams with the new module. 👍🏼

MarcoJanse commented 2 weeks ago

Moving to AVM sounds like the logical step to take to move forward with ALZ-Bicep, although I realize it's quite a project. As more and more people are starting to adopt AVM, it would be illogical for ALZ-Bicep to stay behind.

Some of the things I would like to see when switching to AVM:

tulpy commented 2 weeks ago

I think this is the next logical evolution of this repo, as a partner we have created Bicep Landing Zone assets that are based on the LZ vending and this ALZ-Bicep repos to form part of our Platform and Application Landing Zone offerings.

As outlined by @MarcoJanse, some of the things we have done include,

oZakari commented 2 weeks ago

Thank you @MarcoJanse and @tulpy for your feedback! We have considered transitioning to .bicepparams in the past but there was some complexity/time constraints with the existing modules and having to handle the path references in terms of the Accelerator. However, with using the AVM modules, I think this is something we can take another look at for potentially incorporating.

Adding flexibility to the Hub Networking module is definitely one of the core goals for this initiative so glad you feel the same!

@MarcoJanse could you clarify what you are referring to in regards to "deployment slots", are you referring to Azure DevOps/GitHub environments for canary testing?

@tulpy Very cool to hear that you have created pattern modules for platform landing zones, I'd be interested in hearing any downfalls or concerns (if any) that you have had to address with this.

MarcoJanse commented 2 weeks ago

Hi @oZakari. Sorry, for the confusion. I meant Bicep deployment stacks. I have now updated my original comment as well.

oZakari commented 1 week ago

@MarcoJanse ah thank you for the clarification! Deployment Stacks are indeed something we are considering again now that they are generally available (GA). We still need to investigate a bit more to be conclusive, but we should be able to shed some more light on this in the near future.

tulpy commented 1 week ago

Hi @oZakari No major issues or downfalls outside minor things like outputs for some AVM modules that don't exist that are passed between modules. The other thing that was a little challenging (not to do with AVM specifically) was Day 2 operations for Azure Firewall Rules and VPN connections, running the Hub module for Azure Firewall rules is quite risky and time-consuming so we created a module that creates the IP Groups and Firewall rules using Bicep Import/Export to make it more modular. We use the existing Hub module to create the Azure Firewall Policy resource and then the new module does the rest.

Happy to chat separately if you find that of value.