This time around I will review the virtual machines (VMs) provisioning process. For all intends and purposes, this environment will consist of an Active Directory Domain Server (AD DS), required to support authentication within our Azure environment; a Microsoft Dynamics GP application server, which will serve as a session host, therefore running GP and the Web Client Runtime; a Microsoft SQL Server database server, which will host the GP databases, the Web Management database, Session Central database, and Tenant Services database; and finally, a web server running IIS to support the Web Client itself along with the different session services required to run our web application.
For more information on Microsoft Dynamics GP 2013 web client architecture, see Dynamics GP 2013 Web Client Infrastructure Overview over at Developing for Dynamics GP.
All these VMs need to be a part of an Azure Virtual Network (AVN), so you must start by creating one. The purpose of this article is not to discuss how to setup an AVN as there are some considerations for this, especially if you are going to network with your on-premise network. For more information on the steps required see Create a Virtual Network in Windows Azure. Suffice to say, the AVN I created is a pure cloud network and will not interact with my on-premise network.
Provisioning the Virtual Machines
In order to begin the provisioning process, it is necessary to go to the Windows Azure management portal - https://manage.windowsazure.com. If you have completed a new subscription, the welcome page will direct you to setup a new asset for the environment.
|Azure Management Console|
The first thing in my list is an Active Directory VM which I will call ip-ads01. This VM will serve up my environment's domain controller - my domain will be called ip-forest.local - and will act as a DNS server as well. It will also allow me to create my environment's users and add the necessary security groups needed for the Web Client. Please consult with a network administrator on the steps required to setup AD DS. You can find more info in the following Microsoft TechNet article: AD DS Design Guide.
One of the cool aspects of Azure is the ability to select the type of memory and core you will be needing for your VM. I decided to go with a Large server, since I will be running Windows Server 2012 and AD DS management console tends to also use up some memory.
Once the server is been provisioned, setting up AD DS and making the server a primary domain controller should be fairly straight forward (using Server Manager) - dcpromo has been deprecated in Windows Server 2012 - see Introducing the first Windows Server 2012 Domain Controller (Part 1 of 2) over at the Server and Management team blog.
Dynamics GP VM provisioning
Once we complete the AD DS server setup, it's time to move on to provisioning the Dynamics GP VM. The process is similar to the Active Directory server provisioning. Here, I am also choosing a Windows Server 2012 machine to run the Dynamics GP client and the Web Client Runtime - in conjunction our session host server.
|VM OS Selection|
Next is the VM mode configuration, which could pretty much be summarized as setting up the VM's DNS on your Azure network. For obvious reasons, I am removing my Azure DNS extension in the picture below.
Finally, in the step of setting up the VM, you will want to assign an availability set. Again, not a topic for this article, but suffice to say something critical to consider during your Azure planning if you are to ensure maximum application uptime - see Manage the Availability of Virtual Machines for more information.
|Provisioning process kicked off for our first machine|
Not to be confused with SQL Azure, we will be provisioning a standard VM running a full version of Microsoft SQL Server 2012 Evaluation Edition. Interestingly enough, you can only get this on a Windows Server 2008 R2 operating system if you decide to use the standard gallery image. The alternative, of course, is to provision a standard Windows Server 2012 VM, then manually load SQL Server 2012 on it. Again, since this is a demo environment and my intent is not to install GP on the SQL Server - just one of those best practices items that I follow - I will continue and provision the standard image available from the gallery.
Microsoft Dynamics GP is not supported on SQL Azure (yet!) due to a number of design limitations in the latter, for example, cross-database operations. This is significant since Dynamics GP makes extensive calls to the system database from within the company database.
From here on, the VM configuration is standard. I chose to name this machine ip-sql01.
The final VM to provision is the web server, for which I will be using a Windows Server 2012 image and will add IIS later. You can follow the instructions in Installing IIS 8 on Windows Server 2012 after the provisioning process has been completed to get IIS up and running.
A few notes from this exercise...
1) Once you have provisioned all machines, you will need remote into each to change the DNS settings on each to point to your DNS server on your AD DS VM. At this point, you can join them to the domain. To remote into a machine, highlight the VM and click on the Connect button at the lower end of the screen.
|Management Console screen|
2) On the SQL Server, you will need to open ports 1433 and 80 to the domain only. Port security is pretty tight for the provisioned VMs. In addition, you will need to change SQL Server security to Mixed Mode and configure SQL Server Reporting Services by using the standard Reporting Services Configuration tool.
3) The PING command line utility is disabled in Azure, so don't try to use it. You cannot ping a VM from another one. A good measure of success is attempting to add your servers in Server Manager on your AD DS VM. If you can add each server, you are good to go which means TCP/IP is working as expected within your Azure virtual network.
My next installment will focus on getting the GP session host up and running. As we move through each server installation, I will continue to point out other considerations in making this all work.
Until next post!
Mariano Gomez, MVP