Deploying Single Tenant Applications with Deployment Manager

Automated deployment for web applications and databases

Moderators: Mike Upton, justin.caldicott, Sean.newham, csmith, chirayu, DavidSimner, david.conlin

Deploying Single Tenant Applications with Deployment Manager

Postby stevenazz » Fri Sep 20, 2013 3:34 pm

Hi,

I was evaluating Redgate Deployment Manager in order to try automate our organisation's deployment process but due to the architecture of the organisation's applications I am not sure how to set it up.

Our organisation runs sort of a single tenant architecture whereby each client has a copy of our two applications in their respective folder and their own database instance. Our current process is to extract manually the updated files from zip files and apply them to each client folder. This is very time consuming since we have a large number of clients and the number is always increasing.

We setup environments to deploy against our Development, Testing, Staging and Production environments. How would we go about setting up a client on the deployment manager? We would setup a project for both our applications but how will we push the releases to each client folder/website?
stevenazz
 
Posts: 2
Joined: Fri Sep 20, 2013 1:20 pm

Postby james.billings » Tue Sep 24, 2013 12:01 pm

Hi,
There's a couple of options to do what you want:

1) create a "step" for each client. You can then configure the variable scope to be per-step to deploy to the folder/website you want for that client. The main issue here is that currently you cannot name the steps, and assuming you use the same package source for all clients, all the steps would be named identically, making it a little harder to know which step related to which client (you'd need to go off the step number as opposed to name)

2) add the same agent to the client multiple times, naming each instance for the client. You can then do the same as 1) but scope the variables to the "machine" rather than the step.

Hope that helps!
james.billings
 
Posts: 1144
Joined: Wed Jun 16, 2010 11:10 am
Location: My desk.

Postby stevenazz » Tue Sep 24, 2013 2:02 pm

Hi James,

Thank you for your reply, I used your second option whereby added multiple target machines (named per client) against the same agent (web server). After adding the target machines, I setup the Project Variables by utilising the "RedGatePackageDirectoryPath" and "RedGateNotAWebSite" and set them to the clients application folder and "True" respectively (two project variables per client).

Each project variable is set to run against the specified client (Target Machine), one issue/query which I had was how to specify which clients to run the release against in case I did not wish to run the release against all clients. There were two ways I could have achieved this:

1) Before deploying the release, excluding the clients (target machines) from the Project Step

2) Removing the Project Variables for clients which were not going to be updated

I found the first option more clean and also it is easier to just exclude target machines and re-adding them at a later stage rather than removing the project variables and having to setup all the paths again.

I would like your thoughts about the above to see if there was another possible or cleaner solution, till now the Deployment Manager seems to be promising after having overcome this obstacle.

Thanks again for your detailed explanation and suggestions!
stevenazz
 
Posts: 2
Joined: Fri Sep 20, 2013 1:20 pm

Postby james.billings » Tue Sep 24, 2013 2:24 pm

Glad you're making progress!

You're right- when you deploy, you deploy to an environment but it's hard to then pick and choose specific machines within that.

If you went for the steps option, you can turn steps on and off at deployment time:

Image

Which may or may not be the lesser of two evils!
james.billings
 
Posts: 1144
Joined: Wed Jun 16, 2010 11:10 am
Location: My desk.


Return to Deployment Manager

Who is online

Users browsing this forum: No registered users and 0 guests

cron