Warning: Undefined variable $file in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php on line 14 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-content/plugins/fix-my-feed-rss-repair/rss-feed-fixr.php:14) in /customers/a/e/3/tunecom.be/httpd.www/stg_ba12f/wp-includes/rest-api/class-wp-rest-server.php on line 1637 {"id":188,"date":"2020-02-17T08:57:00","date_gmt":"2020-02-17T08:57:00","guid":{"rendered":"https:\/\/www.tunecom.be\/stg_ba12f\/?p=188"},"modified":"2020-02-18T13:58:40","modified_gmt":"2020-02-18T13:58:40","slug":"virtual-datacenter-concept-3-of-10-resource-groups","status":"publish","type":"post","link":"https:\/\/www.tunecom.be\/stg_ba12f\/?p=188","title":{"rendered":"Virtual Datacenter Concept | 3 of 10 | Resource Groups"},"content":{"rendered":"\n
Welcome back to the Azure Virtual Datacenter Concept blog post series.<\/p>\n\n\n\n
In our previous posts about naming conventions<\/a> and Azure Governance<\/a>, we’ve defined our rules of play. Now it’s time to start populating our Azure environment with some Resource Groups.<\/p>\n\n\n\n When deploying new resources in Azure, they reside in the Azure Resource Manager<\/a> model. The A<\/strong>zure R<\/strong>esource M<\/strong>anager model is the successor of the Azure Service Management<\/a> model which is often referred to as Azure v1 or Azure Classic. Since we are deploying resources in Azure, we want some kind of containerization <\/strong>or logical <\/strong>management layer on top of that. And that is exactly why we need a resource group before we can deploy a resource in Azure.<\/p>\n\n\n\n A resource group is a logical boundary <\/strong>that can organize your resources based on the environment, application or other specific characteristics<\/strong>. We can harden our resource group from unwanted changes by implementing role based access controls and resource locks. <\/p>\n\n\n\n Prior to deploying our first resource in a resource group, we have a couple of recommendations <\/strong>and\/or limitations <\/strong>that we need to take care of:<\/p>\n\n\n\n Taking the above information into account, we don’t want to go and start deploying resources and resource groups via the Azure Portal. Rule of thumb<\/strong> is to use the Azure Portal as much as you can for view \/ read only actions and perform your deployments with ARM templates, powershell or CLI<\/strong>.<\/p>\n\n\n\n Now before we are going to deploy our base set of resource groups, let’s have some thought on which resource groups we are going to deploy and why. Below table gives you an example <\/strong>that you can use in any of your Azure designs to provide an holistic overview of the required resource groups. Have a look here <\/a>at how naming conventions are provisioned \/ enforced.<\/p>\n\n\n\n The table above gives you guidance on how to deploy a central HUB<\/strong> for resources and create a set of resource groups per environment.<\/p>\n\n\n\n Our environment specific resource groups are designed in a way that we can re-utilize them for multiple purposes. <\/p>\n\n\n\n Below PowerShell script can be used to deploy a tier based environment <\/strong>starting from a simple hub and production approach to a full blow DTAP <\/strong>(Development, Test, Acceptance, Production) environment.<\/p>\n\n\n\n Powershell Script<\/strong><\/p>\n\n\n If we save the script as “1._Create_Az_ResourceGroups_v2.ps1” and run it with the parameters below this should give us the following result.<\/p>\n\n\n View \/ Read-only on the Azure Portal<\/p>\n\n\n\n Thank you for reading through the resource groups blog post, our aim was to give you an overview and set of best practices on how to implement resource groups based on a couple of design standards. When looking at the virtual datacenter concept. We now have a clear naming standard with a set of policies that are being applied to our management groups, subscriptions and resource groups. Our resource groups have been pre-configured in order to facilitate the deployment of our future resources.<\/p>\n\n\n\n The following aspects of the virtual datacenter concept will be highlighted in the following upcoming posts:<\/p>\n\n\n\n Missed a part or want to review a previous section? Be sure to check out my previous posts:<\/p>\n\n\n\n Welcome back to the Azure Virtual Datacenter Concept blog post series. In our previous posts about naming conventions and Azure Governance, we’ve defined our rules of play. Now it’s time to start populating our Azure environment with some Resource Groups. Let’s talk resources! When deploying new resources in […]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":true,"template":"","format":"standard","meta":[],"categories":[22,29,20,23],"tags":[25,45],"yoast_head":"\nLet’s talk resources!<\/h5>\n\n\n\n
Stuff to think about<\/h5>\n\n\n\n
Ready, set, GO? STOP! Let’s first take a couple of design decisions.<\/h5>\n\n\n\n
Resource Group Name<\/td> Resources<\/td><\/tr> HUB<\/td><\/tr> <cus>-hub-storage-rg<\/td> All components related to central\n storage<\/td><\/tr> <cus>-hub-management-rg<\/td> All components related to central\n management tools<\/td><\/tr> <cus>-hub-network-rg<\/td> All components related to central\n networking<\/td><\/tr> <cus>-hub-mig-rg<\/td> All components related to\n migration workloads<\/td><\/tr> <cus>-hub-backup-rg<\/td> All components related to the central backup instance<\/td><\/tr> <cus>-hub-identity-rg<\/td> All components related to the\n central Identity instance<\/td><\/tr> ENV<\/td><\/tr> <cus>-dev-app-rg<\/td> All components related to the\n development application tier<\/td><\/tr> <cus>-dev-web-rg<\/td> All components related to the\n development web tier<\/td><\/tr> <cus>-dev-network-rg<\/td> All components related to the\n development network tier<\/td><\/tr> <cus>-dev-db-rg<\/td> All components related to the\n development database tier<\/td><\/tr> <cus>-dev-storage-rg<\/td> All components related to the\n development storage tier<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n Design ready, let’s go!<\/h5>\n\n\n\n
\n##################\n\nParam(\n [string]$RG_PurposeHUB,\n [string]$RG_PurposePRD,\n [string]$RG_PurposeACC,\n [string]$RG_PurposeTST,\n [string]$RG_PurposeDEV,\n [string]$Cus,\n [string]$fullLocation,\n [string]$owner,\n [string]$EnvironmentTier\n\n)\n\n\n#####################################################################################\n######## START OF NAMING CONVENTION RESOURCE GROUPS HUB,PRD,DEV,TST ########\n#####################################################################################\n\n################### HUB\n$HUBRGID = $Cus + '-' + $RG_PurposeHUB + '-' + 'identity' + '-rg'\n$HUBRGSTOR = $Cus + '-' + $RG_PurposeHUB + '-' + 'storage' + '-rg'\n$HUBRGMGM = $Cus + '-' + $RG_PurposeHUB + '-' + 'management' + '-rg'\n$HUBRGNET = $Cus + '-' + $RG_PurposeHUB + '-' + 'network' + '-rg'\n$HUBRGMIG = $Cus + '-' + $RG_PurposeHUB + '-' + 'mig' + '-rg'\n$HUBRGRSV = $Cus + '-' + $RG_PurposeHUB + '-' + 'backup' + '-rg'\n\n################### PRD\n\n$PRDRGAPP = $Cus + '-' + $RG_PurposePRD + '-' + 'app' + '-rg'\n$PRDRGDB = $Cus + '-' + $RG_PurposePRD + '-' + 'db' + '-rg'\n$PRDRGSTOR = $Cus + '-' + $RG_PurposePRD + '-' + 'storage' + '-rg'\n$PRDRGNET = $Cus + '-' + $RG_PurposePRD + '-' + 'network' + '-rg'\n$PRDRGWEB = $Cus + '-' + $RG_PurposePRD + '-' + 'web' + '-rg'\n\n################### ACC\n\n$ACCRGAPP = $Cus + '-' + $RG_PurposeACC + '-' + 'app' + '-rg'\n$ACCRGDB = $Cus + '-' + $RG_PurposeACC + '-' + 'db' + '-rg'\n$ACCRGSTOR = $Cus + '-' + $RG_PurposeACC + '-' + 'storage' + '-rg'\n$ACCRGNET = $Cus + '-' + $RG_PurposeACC + '-' + 'network' + '-rg'\n$ACCRGWEB = $Cus + '-' + $RG_PurposeACC + '-' + 'web' + '-rg'\n\n################### TST\n\n$TSTRGAPP = $Cus + '-' + $RG_PurposeTST + '-' + 'app' + '-rg'\n$TSTRGDB = $Cus + '-' + $RG_PurposeTST + '-' + 'db' + '-rg'\n$TSTRGSTOR = $Cus + '-' + $RG_PurposeTST + '-' + 'storage' + '-rg'\n$TSTRGNET = $Cus + '-' + $RG_PurposeTST + '-' + 'network' + '-rg'\n$TSTRGWEB = $Cus + '-' + $RG_PurposeTST + '-' + 'web' + '-rg'\n\n################### DEV\n\n$DEVRGAPP = $Cus + '-' + $RG_PurposeDEV + '-' + 'app' + '-rg'\n$DEVRGDB = $Cus + '-' + $RG_PurposeDEV + '-' + 'db' + '-rg'\n$DEVRGSTOR = $Cus + '-' + $RG_PurposeDEV + '-' + 'storage' + '-rg'\n$DEVRGNET = $Cus + '-' + $RG_PurposeDEV + '-' + 'network' + '-rg'\n$DEVRGWEB = $Cus + '-' + $RG_PurposeDEV + '-' + 'web' + '-rg'\n\n#####################################################################################\n######## END OF NAMING CONVENTION RESOURCE GROUPS HUB,PRD,DEV,TST ########\n#####################################################################################\n\n\n\n#####################################################################################\n######## START OF CREATION RESOURCE GROUPS HUB,PRD,DEV,TST,ACC ########\n#####################################################################################\n\n\nfunction new-resourcegroups\n{\nParam ([string]$fullLocation,[string]$owner,[string]$rsgapp,[string]$rsgdb,[string]$rsgstor,[string]$rsgnet,[string]$rsgweb,[string]$rsgpurpose)\n\n New-AzResourceGroup -Name $rsgapp -Location $fullLocation -Tag @{Environment="$rsgpurpose";Purpose="Application";Owner="$owner"}\n New-AzResourceGroup -Name $rsgdb -Location $fullLocation -Tag @{Environment="$rsgpurpose";Purpose="Database";Owner="$owner"}\n New-AzResourceGroup -Name $rsgstor -Location $fullLocation -Tag @{Environment="$rsgpurpose";Purpose="Storage";Owner="$owner"}\n New-AzResourceGroup -Name $rsgnet -Location $fullLocation -Tag @{Environment="$rsgpurpose";Purpose="Networking";Owner="$owner"}\n New-AzResourceGroup -Name $rsgweb -Location $fullLocation -Tag @{Environment="$rsgpurpose";Purpose="Web";Owner="$owner"}\n}\n\n\nfunction new-hubresourcegroups\n{\nParam ([string]$fullLocation,[string]$owner,[string]$rsgmgm,[string]$rsgdb,[string]$rsgstor,[string]$rsgnet,[string]$rsgweb,[string]$rsgpurpose,[string]$rsgmig,[string]$rsgrsv,[string]$rsgidentity)\n\n ### HUB AZ Powershell\n New-AzResourceGroup -Name $rsgstor -Location $fullLocation -Tag @{Environment="$RG_PurposeHUB";Purpose="Storage";Owner="$owner"}\n New-AzResourceGroup -Name $rsgmgm -Location $fullLocation -Tag @{Environment="$RG_PurposeHUB";Purpose="Management";Owner="$owner"}\n New-AzResourceGroup -Name $rsgnet -Location $fullLocation -Tag @{Environment="$RG_PurposeHUB";Purpose="Networking";Owner="$owner"} \n New-AzResourceGroup -name $rsgmig -Location $fullLocation -Tag @{Environment="$RG_PurposeHUB";Purpose="Migration";Owner="$owner"}\n New-AzResourceGroup -Name $rsgidentity -Location $fullLocation -Tag @{Environment="$rsgpurposeHUB";Purpose="Identity";Owner="$owner"} \n New-AzResourceGroup -Name $rsgrsv -Location $fullLocation -Tag @{Environment="$rsgpurpose";Purpose="Backup";Owner="$owner"} \n }\n\n\n\n$EnvironmentTier\n \n# Select the setup steps required for this environment\n Switch ($EnvironmentTier)\n {\n 1 {\n # new HUB Resource Groups\n new-hubresourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $HUBRGAPP -rsgdb $HUBRGDB -rsgstor $HUBRGSTOR -rsgnet $HUBRGNET -rsgweb $HUBRGWEB -rsgpurpose $RG_PurposeHUB -rsgmgm $HUBRGMGM -rsgmig $HUBRGMIG -rsgidentity $HUBRGID -rsgrsv $HUBRGRSV\n # new PRD Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $PRDRGAPP -rsgdb $PRDRGDB -rsgstor $PRDRGSTOR -rsgnet $PRDRGNET -rsgweb $PRDRGWEB -rsgpurpose $RG_PurposePRD \n }\n 2 {\n # new HUB Resource Groups\n new-hubresourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $HUBRGAPP -rsgdb $HUBRGDB -rsgstor $HUBRGSTOR -rsgnet $HUBRGNET -rsgweb $HUBRGWEB -rsgpurpose $RG_PurposeHUB -rsgmgm $HUBRGMGM -rsgmig $HUBRGMIG -rsgidentity $HUBRGID -rsgrsv $HUBRGRSV\n # new PRD Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $PRDRGAPP -rsgdb $PRDRGDB -rsgstor $PRDRGSTOR -rsgnet $PRDRGNET -rsgweb $PRDRGWEB -rsgpurpose $RG_PurposePRD \n # new ACC Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $ACCRGAPP -rsgdb $ACCRGDB -rsgstor $ACCRGSTOR -rsgnet $ACCRGNET -rsgweb $ACCRGWEB -rsgpurpose $RG_PurposeACC\n\n }\n 3 {\n # new HUB Resource Groups\n new-hubresourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $HUBRGAPP -rsgdb $HUBRGDB -rsgstor $HUBRGSTOR -rsgnet $HUBRGNET -rsgweb $HUBRGWEB -rsgpurpose $RG_PurposeHUB -rsgmgm $HUBRGMGM -rsgmig $HUBRGMIG -rsgidentity $HUBRGID -rsgrsv $HUBRGRSV\n # new PRD Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $PRDRGAPP -rsgdb $PRDRGDB -rsgstor $PRDRGSTOR -rsgnet $PRDRGNET -rsgweb $PRDRGWEB -rsgpurpose $RG_PurposePRD \n # new ACC Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $ACCRGAPP -rsgdb $ACCRGDB -rsgstor $ACCRGSTOR -rsgnet $ACCRGNET -rsgweb $ACCRGWEB -rsgpurpose $RG_PurposeACC\n # new TST Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $TSTRGAPP -rsgdb $TSTRGDB -rsgstor $TSTRGSTOR -rsgnet $TSTRGNET -rsgweb $TSTRGWEB -rsgpurpose $RG_PurposeTST\n }\n 4 {\n # new HUB Resource Groups\n new-hubresourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $HUBRGAPP -rsgdb $HUBRGDB -rsgstor $HUBRGSTOR -rsgnet $HUBRGNET -rsgweb $HUBRGWEB -rsgpurpose $RG_PurposeHUB -rsgmgm $HUBRGMGM -rsgmig $HUBRGMIG -rsgidentity $HUBRGID -rsgrsv $HUBRGRSV\n # new PRD Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $PRDRGAPP -rsgdb $PRDRGDB -rsgstor $PRDRGSTOR -rsgnet $PRDRGNET -rsgweb $PRDRGWEB -rsgpurpose $RG_PurposePRD \n # new ACC Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $ACCRGAPP -rsgdb $ACCRGDB -rsgstor $ACCRGSTOR -rsgnet $ACCRGNET -rsgweb $ACCRGWEB -rsgpurpose $RG_PurposeACC\n # new TST Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $TSTRGAPP -rsgdb $TSTRGDB -rsgstor $TSTRGSTOR -rsgnet $TSTRGNET -rsgweb $TSTRGWEB -rsgpurpose $RG_PurposeTST\n # new DEV Resource Groups\n new-resourcegroups -fullLocation $fullLocation -owner $owner -rsgapp $DEVRGAPP -rsgdb $DEVRGDB -rsgstor $DEVRGSTOR -rsgnet $DEVRGNET -rsgweb $DEVRGWEB -rsgpurpose $RG_PurposeDEV\n }\n }\n\n\n#####################################################################################\n######## END OF CREATION RESOURCE GROUPS HUB,PRD,DEV,TST ########\n#####################################################################################\n<\/pre>\n\n\n
\n.\\1._Create_Az_ResourceGroups_v2.ps1 -RG_PurposeHUB "hub" -RG_PurposePRD "prd" -RG_PurposeACC "acc" -RG_PurposeTST "tst" -RG_PurposeDEV "dev" -Cus "cus" -fullLocation "westeurope" -owner "Yannick Dils" -EnvironmentTier 4\n<\/pre>\n\n\n
<\/figure>\n\n\n\n
<\/figcaption><\/figure><\/div>\n\n\n\nSummary<\/h3>\n\n\n\n
What\u2019s next?<\/h4>\n\n\n\n