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":183,"date":"2020-01-07T20:47:00","date_gmt":"2020-01-07T20:47:00","guid":{"rendered":"https:\/\/www.tunecom.be\/stg_ba12f\/?p=183"},"modified":"2020-02-18T13:57:35","modified_gmt":"2020-02-18T13:57:35","slug":"virtual-datacenter-concept-1-of-10-naming-conventions","status":"publish","type":"post","link":"https:\/\/www.tunecom.be\/stg_ba12f\/?p=183","title":{"rendered":"Virtual Datacenter Concept | 1 of 10 | Naming Conventions"},"content":{"rendered":"\n

This blogpost is part of a series of Azure Virtual Datacenter Concep<\/a>t blog posts.<\/p>\n\n\n\n

Let’s talk about one of the key pilars from the Azure Governance scaffold: naming conventions<\/strong><\/p>\n\n\n\n

\"Azure<\/figure><\/div>\n\n\n\n

Understanding which resource, what is does and where it is located<\/h4>\n\n\n\n

Naming standards<\/strong> and conventions <\/strong>have been around for decades.
They are commonly used to identify objects and are used in most industries.<\/p>\n\n\n\n

Let’s take car manufacturer BMW as an example, their cars are named with certain key characteristics in mind.<\/p>\n\n\n\n

BMW 118D Hatch<\/strong>
Brand <\/strong>= BMW
Motorization <\/strong>= 1800 CC
Fuel Type<\/strong> = Diesel
Bodywork<\/strong> = Hatch (5 doors)<\/p>\n\n\n\n

Pretty simple example on how a well defined naming standard can immediately give you the necessary info about a certain object. In essence, that’s why naming conventions are used.<\/p>\n\n\n\n

Azure Naming conventions<\/h4>\n\n\n\n

As with regular industry naming conventions, standardizing the way you define your Azure Resources is crucial.<\/p>\n\n\n\n

Microsoft has a predefined set of “policies” that need to be met with regards to naming your resources, the following docs <\/a>article gives you an overview on how naming standards can be applied.<\/p>\n\n\n\n

Below you can find a couple of commonly <\/strong>used resources that need to be uniquely identified globally <\/strong>across Microsoft Azure<\/strong>. <\/p>\n\n\n\n

! We will need some kind of generalization to keep our resources unique <\/h5>\n\n\n\n
Entity<\/td>Scope<\/td><\/tr>
API management<\/td>Global<\/td><\/tr>
Key vault<\/td>Global<\/td><\/tr>
Function app<\/td>Global<\/td><\/tr>
Web app<\/td>Global<\/td><\/tr>
Storage account name (data)<\/td>Global<\/td><\/tr>
Storage account name (disks)<\/td>Global<\/td><\/tr>
Data Lake Storage<\/td>Global<\/td><\/tr>
Container registry<\/td>Global<\/td><\/tr>
Service\n Bus namespace<\/td>Global<\/td><\/tr>
Event Hubs namespace<\/td>Global<\/td><\/tr>
Log Analytics Workspace<\/td>Global<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n

Taking the above information into account, we’ve generated a set of scripts that allow you to easily define a naming policy.<\/p>\n\n\n\n

Input variables<\/h4>\n\n\n\n

To start building our naming conventions we first need a couple of input variables<\/strong> that are unique <\/strong>to our setup.<\/p>\n\n\n\n

<\/p>\n\n\n

\n#####################################################################################\n#\n# This script provides you with an overview of all naming conventions that are being used in the Virtual Datacenter Concept\n# Version: 0.1\n# Author: Yannick Dils\n#\n#####################################################################################\n\n#####################################################################################\n#\n# Below is a set of variables that is being used in order to populate the naming conventions\n#\n#####################################################################################\n\n\n# Variable abbreviation for the resource group that will be used for central shared services\n$RG_PurposeHUB = "hub" \n\n# Variable abbreviation for the resource group that will be used for production workloads\n$RG_PurposePRD = "prd"\n\n# Variable abbreviation for the resource group that will be used for acceptance workloads\n$RG_PurposeACC = "acc"\n\n# Variable abbreviation for the resource group that will be used for test workloads\n$RG_PurposeTST = "tst"\n\n# Variable abbreviation for the resource group that will be used for development workloads\n$RG_PurposeDEV = "dev"\n\n# Variable abbreviation for the customer \/ environment\n$Cus = "<proj>"\n\n# Variable abbreviation for the resource location\n$Location = "weu"\n\n# Variable which provides the desired resource location\n$FullLocation = "WestEurope"\n\n# Variable abbreviation for the resource owner\n$owner = "YD"\n\n# Variable abbreviation for the environment tier\n# 1 : HUB + PRD\n# 2 : HUB + PRD + ACC\n# 3 : HUB + PRD + ACC + TST\n# 4 : HUB + PRD + ACC + TST + DEV\n$EnvironmentTier = "4"\n\n# Variable required for resource generalization\n$Guid = [guid]::NewGuid()\n$MyGUID = $Guid.Guid.Remove(8)\n\n#####################################################################################\n#####################################################################################\n<\/pre>\n\n\n
<\/pre>\n\n\n\n

Resource Groups<\/h4>\n\n\n\n

Resource group naming conventions are provided as per below. A resource group should be able to clearly define the customer<\/strong> or project<\/strong>, the type <\/strong>of environment <\/strong>and the purpose <\/strong>of the resources <\/strong>that are being created in the resource group.<\/p>\n\n\n\n

Customer or project (3 letter abbreviation) <\/strong><\/td>\n –<\/strong>\n <\/td>\n Tier<\/strong>\n (3 letter abbreviation of\n the Tier, HUB; PRD, TST, ACC, DEV)<\/strong>\n <\/td>\n  <\/strong>\n <\/td>\n Purpose<\/strong>\n (Resource Group Purpose\n Abbreviation)<\/strong>\n <\/td>\n –<\/strong>\n <\/td>\n Resource Purpose<\/strong>\n <\/td><\/tr>
<proj> <\/td>\n –\n <\/td>\n hub\n <\/td>\n –\n <\/td>\n identity\n <\/td>\n –\n <\/td>\n rg\n <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n

<\/p>\n\n\n

Powershell script<\/h5>\n\n\n
\n$HUBRGID = $Cus + '-' + $RG_PurposeHUB + '-' + 'identity' + '-rg'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Networking<\/h4>\n\n\n\n

Networking related naming conventions are provided as per below. In order to be able to perform smart discovery over your networking resources, Virtual Networks (VLANs), Subnets, Network Security Groups are named according to the endpoints and services that are located in the specified network topology.<\/p>\n\n\n\n

Virtual Networks<\/h5>\n\n\n\n
Customer or project (3 letter abbreviation)<\/strong><\/td>\n –<\/strong>\n <\/td>\n Tier<\/strong>\n (3 letter abbreviation of\n the Tier, PRD, TST, ACC, DEV)<\/strong>\n <\/td>\n –<\/strong>\n <\/td>\n Location<\/strong>\n (3 letter abbreviation of\n the location)<\/strong>\n <\/td>\n –<\/strong>\n <\/td>\n Resource Purpose<\/strong>\n <\/td><\/tr>
<proj> <\/td>\n –\n <\/td>\n hub\n <\/td>\n –\n <\/td>\n weu\n <\/td>\n –\n <\/td>\n vn\n <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script <\/h5>\n\n\n
\n$virtualnetworkHUBname = $Cus + '-' + $RG_PurposeHUB + '-' + $Location + '-vn'\n\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Subnets<\/h5>\n\n\n\n
Customer or project (3 letter abbreviation)<\/strong> <\/td>–<\/strong><\/td>\n Tier<\/strong>\n (3 letter abbreviation of\n the Tier, PRD, TST, ACC, DEV)<\/strong>\n <\/td>– <\/td>\n Subnet purpose<\/strong>\n <\/td>–<\/strong><\/td>\n Resource Purpose<\/strong>\n <\/td><\/tr>
<proj> <\/td>–<\/td>\n hub\n <\/td>– <\/td>\n identity\n <\/td>–<\/td>\n sn\n <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$hubsubnetname1identity = $Cus + '-' + $RG_PurposeHUB + '-' + 'identity' + '-sn'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Network Security Groups<\/h5>\n\n\n\n
Customer or project (3 letter abbreviation)<\/strong> <\/td>–<\/strong><\/td>\n Tier<\/strong>\n (3 letter abbreviation of\n the Tier, PRD, TST, ACC, DEV)<\/strong>\n <\/td>–<\/strong><\/td>\n Subnet purpose<\/strong>\n <\/td>–<\/strong><\/td>\n Resource Purpose<\/strong>\n <\/td><\/tr>
<proj> <\/td>–<\/td>\n hub\n <\/td>–<\/td>\n identity\n <\/td>–<\/td>\n nsg\n <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$hubnsgid = $Cus + '-' + $RG_PurposeHUB + '-' + 'identity' + '-' +'nsg'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Public IP addresses<\/h5>\n\n\n\n
<\/strong> Public IP usage<\/strong><\/td>–<\/td> Public IP abbreviation<\/strong><\/td><\/tr>
\n resourcename\n <\/td>–<\/td>\n pip\n <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$vmpip = $VirtMachName + '-pip'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Load Balancing<\/h4>\n\n\n\n

Azure provides several cloud native load balancing solutions, as with other Azure Resources, they require a logical naming convention.<\/p>\n\n\n\n

Internal Load Balancer<\/h5>\n\n\n\n
Internal Load Balancer<\/strong><\/td>–<\/strong><\/td>\n Purpose <\/strong>\n <\/td><\/tr>
ilb<\/td>–<\/td>adfs<\/td><\/tr>
ilb<\/td>–<\/td>sql<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$adfsintlb = 'ilb-' + 'adfs'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

External Load Balancer<\/h5>\n\n\n\n
External Load Balancer<\/td>–<\/strong><\/td>\n Purpose <\/strong>\n <\/td><\/tr>
elb<\/td>–<\/td>adfswap<\/td><\/tr>
elb<\/td>–<\/td>rdgw<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$adfsextlb = 'elb-' + 'adfswap'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

General Compute Resources<\/h4>\n\n\n\n

Compute resources contain virtual machines, availability sets, storage and everything related to the infrastructure you need to run your apps.<\/p>\n\n\n\n

<\/p>\n\n\n\n

Storage Accounts<\/h5>\n\n\n\n
Storage Account<\/strong><\/td>Redundancy level<\/strong><\/td>Customer Abbreviation<\/strong><\/td>Location<\/strong><\/td>Tier<\/strong><\/td>Purpose<\/strong><\/td><\/tr>
st<\/td>lrs<\/td><proj><\/td>weu<\/td>prd<\/td>logs<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$SA_Logs = 'stlrs' + $Cus + $location  + $RG_PurposeHUB + 'logs'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Availability Sets<\/h5>\n\n\n\n
Customer Abbreviation<\/strong><\/td>–<\/strong><\/td>Tier<\/strong><\/td>–<\/strong><\/td>Purpose<\/strong><\/td>–<\/strong><\/td>Resource Purpose<\/strong><\/td><\/tr>
<proj><\/td>–<\/td>hub<\/td>–<\/td>sql<\/td>–<\/td>as<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n#$hubavsql = $Cus + '-' + $RG_PurposeHUB + '-' +  'sql' + '-' + 'as'\n\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Virtual Machines<\/h5>\n\n\n\n
Customer Abbreviation<\/strong><\/td>Location<\/strong><\/td>Optional Tie<\/strong>r <\/td>Purpose<\/strong><\/td>##<\/strong><\/td><\/tr>
<proj><\/td>weu<\/td>prd<\/td>sql<\/td>01<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$VMShortName = "sql01"\n$VirtMachName = $Cus.ToLower() + $location.ToLower() + $RG_PurposePRD + $VMShortName\n\n<\/pre>\n\n\n

<\/p>\n\n\n\n

Virtual Machine Disks<\/h5>\n\n\n\n
Virtual Machine Name<\/strong><\/td>–<\/strong><\/td>Disk drive letter<\/strong><\/td><\/tr>
<vmname><\/td>–<\/td>c<\/td><\/tr>
<vmname><\/td>–<\/td>e<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n
Powershell script<\/h5>\n\n\n
\n$OSDiskName = $VirtMachName + '-c'\n<\/pre>\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

Summary<\/h4>\n\n\n\n

In this blogpost, we’ve provided some guidance with regards to naming conventions and standards. The powershell “script” provided can be used for your convenience. In the upcoming series of posts we will be re-using these variables in order to build our Virtual Datacenter Concept topology.<\/p>\n\n\n\n

Checkout our previous blogpost to recap on the Virtual Datacenter Concept<\/a>.<\/p>\n\n\n\n

What’s next?<\/h4>\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