Wednesday, June 19, 2013

Dynamics AX Admin Tools - CodeCrib.AX.Setup

Long overdue for release, I'm glad to announce the first beta of my admin tools. These tools are still a work in progress, but you can start taking advantage of these right away. As you probably know, we have open sourced our TFS build scripts for Dynamics AX, and ever since these were released I've received quite a few emails and messages from people asking how to automate deployment etc outside of TFS. Obviously we do some of that already inside the build scripts, and there's some code sharing that can be done. Additionally, we've been exploring SCVMM (System Center Virtual Machine Manager) for which we would like to automate a lot of things (such as installing AX, deploying code, etc). So, in an effort to refactor and support TFS builds as well as automated scripts or even your own tools (UI?), I embarked on a mission to create a set of admin tools. This first beta release features less than half of the final product, but it's a good start and it's what we've been using for SCVMM so far (more on that in another post).

So, today's release includes a code library (which you can use to create your own tools) and a wrapper PowerShell cmdlet library to automate installs of AX and maintain client and server configurations for AX. The downloads are:

CodeCrib.AX.Setup
CodeCrib.AX.Config


Today I will give you an example of the Setup library and how we're using it. You can find reference documentation of the commands for the Setup library here.



Dynamics AX has always allowed silent installs using parameter files which you can pass to the setup executable of AX. For our VMM setup I wanted to make this even more generic and needed some good tools to support parameterized, automated installs. Additionally, a log file generated after an install of AX actually leaves you with most of the parameters you actually used (the exceptions are passwords are not stored in the log file).
All of this is captured in the library CodeCrib.AX.Setup and the PowerShell CmdLets CodeCrib.AX.Setup.PowerShell . The download also contains a sample UI which lets you load a log file and write it out as a parameter file, or load a parameter file and manipulate it. Note that the UI is just an example of how to use the class library in your own projects, I'm not planning on maintaining that much but will instead focus on the library and PowerShell cmdlets instead. The following is an example of the PowerShell script we currently have in use for installing an AOS:
Param(
    [parameter(mandatory=$true)][string]$setuppath,
 [parameter(mandatory=$true)][string]$databaseserver,
    [parameter(mandatory=$true)][string]$instancename,
 [parameter(mandatory=$true)][string]$aosaccount,
 [parameter(mandatory=$true)][string]$aosaccountpw
    )
import-module ((Get-Location).Path + "\CodeCrib.AX.Setup.PowerShell.dll")

$env:instance = $instancename

$setupparams = get-parameters -filename ((Get-Location).Path + "\AX2012 Server.txt")
$setupparams | set-parameter -environmentvariables

$setupparams | set-parameter -parameter "DbSqlServer" -value $databaseserver
$setupparams | set-parameter -parameter "AosAccount" -value $aosaccount
$setupparams | set-parameter -parameter "AosAccountPassword" -value $aosaccountpw

$setupparams | start-axsetup -setuppath $setuppath


Basically, the PowerShell script accepts some basic information such as the path to the setup executable, the SQL server name, a name for a new AOS server (and it will reuse that as the name of the database assuming you follow convention and what to keep those the same), account and password to use for the AOS service. Obviously this is abbreviated and it's specific to just installing an AOS. I will post more examples in future posts.
But basically, this loads the PowerShell cmdlets, loads the parameter file (AX2012 Server.txt) and then 1) replaces the %instance% environment variable, and sets the db / aos / password in the parameter object and starts the AX setup.

Tomorrow I will show you an example PowerShell script for the CodeCrib.AX.Config.PowerShell library, to create some standard configuration files to get into layers, development workspace, etc. Enjoy!

No comments:

Post a Comment