Code Monkey home page Code Monkey logo

azure / enterprise-scale-for-avs Goto Github PK

View Code? Open in Web Editor NEW
122.0 23.0 78.0 64.93 MB

Enterprise-scale for AVS represents the strategic design path and target technical state for an Azure VMware Solution (AVS) deployment. This solution provides an architectural approach and reference implementation to prepare landing zone subscriptions for a scalable Azure VMware Solution (AVS) cluster.

License: MIT License

Bicep 43.28% PowerShell 8.52% Shell 0.43% HCL 47.77%
lza

enterprise-scale-for-avs's Introduction

Navigation Menu


Enterprise-Scale for AVS

Welcome to the Enterprise Scale for Azure VMware Solution (AVS) repository

Average time to resolve an issue

Percentage of issues still open

User Guide

To find out more about the Azure landing zones reference implementation, please refer to the documentation on our Wiki

Enterprise-scale is an architectural approach and a reference implementation that enables effective construction and operationalization of landing zones on Azure, at scale. This approach aligns with the Azure roadmap and the Cloud Adoption Framework for Azure.

Enterprise-scale for AVS represents the strategic design path and target technical state for an Azure VMware Solution (AVS) deployment. This solution provides an architectural approach and reference implementation to prepare landing zone subscriptions for a scalable Azure VMware Solution (AVS) cluster. For the architectural guidance, check out Enterprise-scale for AVS in Microsoft Docs.

Golden state platform foundation with AVS Landing Zone highlighted in red

The enterprise-scale for AVS only talks about with what gets deployed in the specific AVS landing zone subscription highlighted by the red box in the picture above. It is assumed that an appropriate platform foundation is already setup which may or may not be the official ESLZ platform foundation. This means that policies and governance should already be in place or should be setup after this implementation and are not a part of the scope this program. The policies applied to management groups in the hierarchy above the subscription will trickle down to the Enterprise-scale for AVS landing zone subscription.

This repository contains reference implementation scenarios based on a number of different scenarios. For each scenario, we have included both ARM and Bicep as the deployment languages

This Repository

In this repository, you get access to various customer scenarios that can help accelerate the development and deployment of AVS clusters that conform with Enterprise-Scale for AVS best practices and guidelines. Each scenario aims to represent common customer experiences with the goal of accelerating the process of developing and deploying conforming AVS clusters using IaC as well as providing a step-by-step learning experience.

AVS Greenfield Deployment

This deployment is best suited to those looking to provision a new AVS Private Cloud, the automation will let you choose and deploy the following:

  • AVS Private Cloud: Choose New or Existing
  • [Optional]: Choose New or Existing virtual network (VNet)
  • [Optional]: Deploy Dashboards and Monitoring
  • [Optional]: Enable Diagnostics and Logging for AVS
  • [Optional]: Enable HCX and SRM
Greenfield deployment options:
Azure portal UI Deploy to Azure
Command line (Bicep/ARM) Powershell/Azure CLI
Terraform Terraform

AVS Greenfield Lite Deployment

This deployment is a lite version of the full AVS Greenfield Deployment and will deploy the following:

  • New AVS Private Cloud - Allows for a custom resource group name and Private Cloud Name
  • or Choose an existing AVS Private Cloud
  • [Optional]: Deploy AVS Monitoring
  • [Optional]: Deploy HCX and SRM
Greenfield Lite deployment:
Azure portal UI Deploy to Azure

Terraform modules for additional deployment scenarios and samples

We've created a number of additional Terraform modules for AVS related deployment activities. Details on these modules can be found in the Terraform readme.

Converting Bicep templates to ARM templates

Azure deployment templates are being developed in Bicep. Thus, a script file Build-ARM.ps1 is used to compile the .bicep files to .json so templates can be executed as ARM templates instead of Bicep. This is necessary in any deployment mechanism that communicates with Azure Resource Manager REST API directly.

Once you execute Build-ARM.ps1 in its current location, it will recursively perform 'az bicep build' to all .bicep files to .json files (ARM templates).

Next Steps

Next steps, head to Getting Started to review prerequisites and deployment options

enterprise-scale-for-avs's People

Contributors

fguerri avatar fskelly avatar husamhilal avatar jasonamedina avatar jchancellor-ms avatar jonasbn avatar khushal08 avatar lenvolk avatar lrivallain avatar m80arm avatar mahesh-msft avatar mgodfrey50 avatar microsoftopensource avatar prasad3017 avatar rcanton avatar riperez123 avatar rvandenbedem avatar sblair01 avatar scottholden avatar seanluce avatar shaunjacob avatar sonmitt avatar stevepantol avatar vivalada avatar wkahnza avatar xelizondo avatar yshafner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

enterprise-scale-for-avs's Issues

HCX ARM Issue

image
this error pops when using the AVS Private Cloud w/ the HCX addon ARM template.

Clarify jumphost requirement pertaining to cost

I noticed in the Azure Template, it mentions deploying a bastion (Jumphost), it wasn't clear to me on whether this is something that is provided for free as part of using the template OR if there is a cost for end users? It would be useful to add some details around that and how its used (e.g. only required for the initial setup and can be deleted and hence cost or use of resources is time bound)

Installing AVS via Automation with an existing Azure native environment

Hi Team,

I tested the AVS automation and it works very well as expected. However, this was deployed with a new Azure nework configuration (vNet, GW, and all RGs). Since most customers already have an Azure envirnment how woud we go about deloying to that exiting environment using the Automation process?

Thanks

Kevin

Capitalization on Jumpbox directory

the bicep template references JumpBox while the directory in the repo is Jumpbox. This causes an issue w/ capitalization aware filesystems:

/avs-template.bicep(97,16) : Error BCP104: The referenced module has errors.
/Modules/JumpBox.bicep(16,15) : Error BCP091: An error occurred reading file. Could not find a part of the path /Modules/JumpBox/JumpBoxSubnet.bicep'.
/Modules/JumpBox.bicep(31,16) : Error BCP091: An error occurred reading file. Could not find a part of the path /Modules/JumpBox/Bastion.bicep'.
/Modules/JumpBox.bicep(41,11) : Error BCP091: An error occurred reading file. Could not find a part of the path /Modules/JumpBox/JumpBoxVM.bicep'.
/Modules/JumpBox.bicep(54,35) : Error BCP062: The referenced declaration with name "VM" is not valid.

HCX w/ PC errors

MicrosoftTeams-image (1)
receive this error when using the private cloud w/ HCX template.

Microsoft.AVS/privateClouds/authorizations requires properties object

If a policy is evaluating the properties object, it will error as this isn't included today (null). Include an empty (not null) properties property on all Microsoft.AVS/privateClouds/authorizations resources.

{"code":"InvalidTemplateDeployment","details":[{"code":"BadRequest","message":"Errors encountered in precheck","details":[{"code":"PrecheckFailed","message":"Check failed for private cloud /subscriptions/000-000/resourceGroups/redactedRGName/providers/Microsoft.AVS/privateClouds/redactedPCName/authorizations/redactedAuthName: Missing required field 'properties'"}]}],"message":"The template deployment 'Microsoft.Template-20211130075648' is not valid according to the validation procedure. The tracking id is '000-000'. See inner errors for details."}

Ability to customize naming conventions

customers are not being able to use AVS landing zone accelerator because it does not provide them ability to specify their unique naming conventions.

Resources such as resource group, VNet name, subnet name, etc. are getting created by a pre-defined naming convention hard-coded in ARM template. Some examples below.

"resources": [
            {
              "type": "Microsoft.Resources/resourceGroups",
              "apiVersion": "2021-04-01",
              "name": "[format('{0}-PrivateCloud', parameters('Prefix'))]",
              "location": "[parameters('Location')]"
            },
....

"resources": [
                    {
                      "type": "Microsoft.AVS/privateClouds",
                      "apiVersion": "2021-06-01",
                      "name": "[format('{0}-SDDC', parameters('Prefix'))]",

....
 "resources": [
                    {
                      "type": "Microsoft.Network/virtualNetworks/subnets",
                      "apiVersion": "2021-02-01",
                      "name": "[format('{0}/{1}', parameters('VNetName'), 'JumpBox')]",

Enabling customers to completely customize names assigned to resources will encourage them to use AVS LZA.

Default deployment's name causes race condition when launching simultaneously deployments

Assumption
No custom deployment name is specified via the -n or --name parameter when issuing the az deployment command.

Scenario
When launching a deployment via cli/ARM template, the deployment’s default name is set to the deployment's filename i.e: ESLZDeploy.deploy

Situation
When launching multiple deployments simultaneously, based on the assumption (see above). These deployments will try to use the same deployment name (deployment's filename) for each, creating a race condition.

Result
Only one deployment will succeed in being initiated with the subsequent deployments failing with the message:

{
    'code': 'DeploymentActive', 
    'message': "Unable to edit or replace deployment 'ESLZDeploy.deploy': previous deployment from '2/20/2022 3:06:18 PM' is   still active (expiration time is '2/27/2022 3:06:13 PM'). Please see https://aka.ms/arm-deploy for usage details."
}

Suggestion
Set the deployment name value in the ARM template, avoiding the default behavior. It could be set to something like desired prefix + datetime stamp and dd a brief note in the documentation mentioning how the deployment’s default name is composed and how to change it via the cli parameter --name -n
Point the user for more details to:
https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/deploy-cli#azure-deployment-template-name

Idea: Optional ability to deploy a test VM in the private cloud

Similar to the jumpbox VM, customers have asked, would it be possible to include an option to create a test VM (greenfield first then Brownfield) for testing traffic flow connectivity. Either Windows/Linux VM as long as you can do probing, traceroute/tracert, curl, ping, probing open ports (like Test-NetConnection).

This may be dependent on or will require automating first:

  1. The creation of a DHCP profile in NSX
  2. Associating the DHCP profile to the T1 gateway
  3. The creation of a network segment for the VM/workload
  4. Creating a content library in vCenter
  5. Importing an OVA file to the library as a template
  6. Deploying a new VM using the OVA template

Logging Reference Architecture

Could we add the ability to include logging architecture to the brown field blueprints as a way of providing an logging architecture for creating log analytics solution.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.