Cloud Foundry has been taking the web by storm. PaaS is growing in popularity as more developers find the disruptively positive deployment scenarios that are possible over traditional environments. Cloud Foundry, primarily centered around Linux-based PaaS, now has a sibling called Iron Foundry.
Iron Foundry is an open source project available for the Windows Server Environments with the ability to run the full spectrum of .NET Web Applications, SQL Server, and more. IronFoundry places the Microsoft tool stack on an even footing with the Linux-based stacks.
Step 1: Get IronFoundry Installed and Running by Adron Hall
The first thing you’ll need is to be sure to get a USB Thumb Drive or some mechanism to get the .NET 4.0 & IronFoundry Software onto the Windows Server 2008 Core Instance. If you’re using a full install of Windows Server 2008 then you can use the normal means to retrieve this software. The files you’ll want on the external storage include:
- .NET 4.0 Framework for Server Core (dotNetFx40_Full_x86_x64_SC.exe)
- IronFoundry DEA Service (IronFoundry.Dea.Service.x86.msi or IronFoundry.Dea.Service.x64.msi)
Once you have the software downloaded to a medium to use, get a solid image of Windows 2008 Server Core up and running. With the Windows 2008 Server Core command prompt get the following services installed and started with the following commands:
c:UsersMyUserNamestart /w ocsetup IIS-WebServerRole
c:UsersMyUserNamestart /w ocsetup WAS-NetFxEnvironment
c:UsersMyUserNamestart /w ocsetup IIS-ISAPIExtensions
c:UsersMyUserNamestart /w ocsetup IIS-ISAPIFilter
c:UsersMyUserNamestart /w ocsetup IIS-NetFxExtensibility
c:UsersMyUserNamestart /w ocsetup IIS-ASPNET
c:UsersMyUserNamestart /w ocsetup MicrosoftWindowsPowerShell
c:UsersMyUserNamestart /w ocsetup ServerCore-WOW64
c:UsersMyUserNamestart /w ocsetup NetFx2-ServerCore
c:UsersMyUserNamestart /w ocsetup NetFx2-ServerCore-WOW64
After these services are started, copy the software off of the USB / Storage Device that has .NET 4.0 and the IronFoundry DEA. In the below copy command, “e:” is the storage device.
e:copy *.* c:UsersMyUserName
Now execute the .NET 4.0 Framework (dotNetFx40_Full_x86_x64_SC.exe) for Windows 2008 Server Core.
From this point a standard Windows Wizard will display to step through the rest of the .NET 4.0 Server Core Installation. The next step is to enable IIS Remote Administration:
c:UsersMyUserNamereg add HKEY_LOCAL_MACHINESOFTWAREMicrosoftWebManagementServer /v EnableRemoteManagement /t REG_DWORD /d 1
At this point it is actually a good idea to reboot the server to insure all the services start correctly and the registry setting takes effect. I’m sure that just simply restarting the services might work, but when playing with the registry I like to stay safe and insure everything is set and has taken effect.
After the reboot, start wmsvc.
c:UsersMyUserNamenet start wmsvc
Now kick off the IronFoundry DEA Installation. When the wizard prompts for configuration information, enter the following:
- NATS Host: 10.0.0.1
- NATS Port: 4222
- App Directory: C:IronFoundryapps
- Droplet Directory: C:IronFoundrydroplets
- Install Directory: C:Program FilesIron FoundryDEA
Once the wizard is complete, then go to c:Program FilesIron FoundryDEA and run the DEA executable. This will start the IronFoundry DEA Service and insure it kicks off (self starting) anytime the server may be rebooted.
Step 2: Deploy an ASP.NET MVC Application by Jared Wray
Deploying an ASP.NET MVC application could not be easier when using Iron Foundry and the accompanying tools. There are three ways to deploy your application to Iron Foundry:
- Visual Studio: The Iron Foundry plugin for Visual Studio allows you to push your application to any Cloud Foundry environment supporting .NET.
- Cloud Foundry Explorer: The Cloud Foundry Explorer is a .NET Windows application that allows you to manage multiple cloud instances from a Windows desktop including all of the code and service deployment.
- Command Line (VMC): This is the command line version with all of the features that you see from the plugin and explorer.
You can download these from Iron Foundry at: http://www.ironfoundry.org/download
Getting down to code a deployment…
Lets first start out with downloading and installing the Visual Studio Plugin from Iron Foundry. Go to http://www.ironfoundry.org/download and download the latest. After it is downloaded double click the file and do the install. After the install is done open up Visual Studio and go to Tools > Extension Manager > From there you should see it installed:
Lets go ahead and write a simple ASP.NET MVC (MVC 3 is being used in this and can be downloaded here: http://www.asp.net/mvc) application by creating a simple “Hello World” application for testing. In Visual Studio do the following:
- Go to File > New Project
- Select the ASP.NET MVC 3 Web Application, set the name, location, and solution name and click “ok”
- On the next screen you will be prompted with the “Project Template” and you can select “Empty” and your view engine as “Razor”.
Now we have setup the project we are going to write a simple page and publish it to an Iron Foundry instance.
- From the Solution Explorer right click on the “Controllers” folder and go to Add > Controller.
- The “Add Controller” dialogue window will come up and name it “HomeController” then click the “Add” button.
- Next step is to add the Index View for the Home controller. You can do this by the following:
- Go to the “Views” folder > Create a folder called “Home” inside it
- Right click on the “Home” folder that was just created and Add > View. Name the View “Index.”
In the Views > Home > Index.cshtml file modify the code to be:
(NOTE: Make sure you have compiled the site at least once before pushing it live for the first time.)
With the Visual Studio Plugin from Iron Foundry it is very easy to do a deployment/update from. All you will need to do is define your Cloud Foundry instance with Iron Foundry support and then “Push” your application.
Define your Cloud Foundry instance with Iron Foundry Support:
- From Visual Studio Go to Tools > Cloud Foundry Explorer
- From Cloud Foundry Explorer click the add new cloud button.
- Enter in the following data:
- Server Name: The friendly name of the Cloud Foundry instance you plan to connect to. For this example we will use the
Iron Foundry Trial environment (api.gofoundry.net)
- Runtime Environment: Select the correct runtime environment (right now it should default to: Cloud Foundry Runtime v1.0).
- Register/Logon Info: The Email, and Password are what you need to logon to your Cloud Foundry instance.
- URL: To setup the url of your cloud foundry instance do the following:
- Click on the “Manage Cloud…” button.
- From the Manage Cloud Urls… window click “Add”
- From the Add Cloud Url.. window type the Name and URL such as:
- Name: Iron Foundry Trial
- Url: http://api.gofoundry.net
- Click Ok.
- From the Manage Cloud Urls… window verify that your URL has been added and click ok.
- Once you have entered the information correctly click to validate account and you will see an“Account Valid” message appear.
- Close out the Cloud Foundry Explorer window as you are now ready to push your application!
- Push your Application (The Cool Stuff!)
Now that you have been able to setup your Cloud Foundry instance running Iron Foundry you can now push and update your application by doing the following:
- Right click on your project and then go to “Push Cloud Foundry Application…
- From the Push Cloud Foundry Application select the correct settings:
- Cloud: Select the cloud you entered above.
- Name: Enter in any name you want for the application.
- URL: enter in the full url of the application. Here we will use helloworld23451.gofoundry.net.
- Memory Limit: Select the amount of memory you want your application to use.
- Instances: Select the number of instances you want your application running on.
- Select the services you want to bind to your application such as a database.
Click the “Push” and it will package it up and push it live doing all the configuration of the services and application into Cloud Foundry with Iron Foundry.