We recently released 2.0 version of Web Farm Framework. This was introduced as Beta few months ago and is now available in the RTM version.
Web Farm Framework simplifies the life of people using and running web servers (particularly in multiple server configurations).
The key features of Web Farm Framework include (With new features highlighted in bold):
- One-step provisioning of servers added to a farm.
- Platform provisioning using Web Platform Installer.
- Application provisioning using Microsoft Web Deploy.
- Policy-based provisioning.
- Installation of additional platform components and content.
- Reduced down time with load-balancing integration using ARR.
- Up-to-date status and trace logs of servers in the farm.
- An extensible model that lets you write additional providers.
- Workflow Builder can be used to define and schedule custom tasks that can be run on all servers in the farm.
- Windows Credential Store support enables you to store the administrator credentials used for server provisioning in a secure Windows Credential Store.
- Third party load balancers support
- Improved support for advanced Web Deploy operations
- Improved support for syncing large amount of files
The current documentation talks about core web farm framework concepts and features. I will use this blog post to talk about how powerful is workflow builder and its utility & application in multiple different scenarios.
Before we get started lets quickly enumerate why we might need to use Web Farm framework's Extensibility and Workflow builder:
- Using a tool to do custom operations on a farm of servers
- Using a custom script or power shell commands for custom operations
- Using MS-Deploy operations with Web Farm Framework
- Using a third party Load Balancer with Web Farm Framework
- Using a list of custom command line operations on a farm of servers
- Using Windows Update
While I have listed some scenarios and examples where you could use extensibility and workflow builder; you can see that the ability to create workflows within WFF allows you to really leverage the power of farm management within WFF. You can integrate WFF in your current server environment and use it in parallel with other tools that are necessary for running your configuration. This in turn helps ensure a running server farm at all times and the ability to use all the different pieces that are already a key part of your farm environment.
Workflow builder allows you to plugin to most operations within a running farm. It allows you to have your own custom operations running before and after a WFF operation.
To get started; create a server farm using the server farm tab:
You can create a workflow by clicking on the workflow tab:
You will see a screen listing all the workflows in the system:
These workflows can be easily edited and maintained through the UI.
You can now create specific workflows by adding a provider:
I will create a MSDeploy provider for the purpose of this example; you can create workflow based on your specific needs. There is no current limit on the number of workflows you can create with the farm.
You can use a friendly name in the above dialog and specific the operation scope. It will be unused for MSDeploy operations since it is not applicable in that context. The retry attempts are self-explaining but you should note that this is helpful in scenarios where a particular operation might not be successful at the first try. It is important to use something realistic here so all the depending and dependent farm operations can be successful. Note that you can use any server farm environment variables here for syncrhonization.You can use a basic command to sync a specific website from msdeploy -verb:sync -source:apphostconfig="Younus Web",computername=sourcemachine -dest:apphostconfig=" Younus Web " -whatif > msdeploy.log
I can use advanced options of MS Deploy to control other options. This also allows me to use the sync settings that were not available already.
The real power of the workflow builder becomes evident once you can control where the particular operation plugs into. You can pretty much find the right place in the WFF Operations sequence and plug in your custom operation there.For instance; if you had a load balancer operation that you needed to run before file synchronization; you can easily do that by using the right Load Balancer dependencies without jeopardizing the health of the overall farm.
You can use and create this through a very friendly UI. You can also use the API surface provided by WFF to achieve the same thing through code. Here is a great example written by Gurpreet Outlining the support for F5 using the underlying extensibility provided by WFF.Enjoy!