Best practice for keeping multiple octopus servers in sync

Hi there,

We have recently setup 2 octopus servers - 1 in our local dev/qa environment and another for isolated prod environment. I want to make the synchronisation of these 2 octopus servers bug free. I am basically after the best practices when it comes to setting up isolated octopus servers.

To give you a litte context, I have setup local octopus with it’s own lifecycle (dev->qa) and variable set etc… and the prod environment has it’s own. Now when I try to sync deployment process from local octopus to prod octopus… I get a lot of dependency issues.

What would be the best practice around managing lifycycles, project variables, etc when it comes to managing 2 separate octopus servers? All I want is to sync deployment processes, and have the variables, lifecycle, channels etc separate to each other.

Kind regards
Sujan

Hi Sujan,

Thanks for getting in touch! Our recommended best approach for syncing between two Octopus instances is to use our migration tool. http://docs.octopus.com/display/OD/Data+migration
It exports everything from one instance into JSON files which can then be imported to another. The good thing is that it does not require the same dependencies on data IDs that the octo.exe import/export feature requires.
It works on names to uniquely identify information. It also means that you can script it to delete any folders you do not want imported.

We recently extended it to only export project related data: http://docs.octopus.com/display/OD/Partial+Export

We generally recommend that you use one instance as the master server and only make changes to processes and variables on that server. The secondary server would just be for deploying as this will lead to the least errors.

Please let me know if you have any additional questions or if I can help with anything else.
Vanessa

Hi Vanessa,

Thank you for the reply. Yes I have been using octopus migrator tool myself. While the partial export would definitely be useful, it still does not fix my problem.

I am happy to use master (local) octopus to maintain variables, however it will also require setting up environment and lifecycle in our local octopus, as these variables are scoped.

I guess, my other question will be around environment and lifecycle management. What would be the best practice arount it when it comes to isolated deployment pattern. I was planning on having Dev/QA envionments and a lifecycle consisting of these two environments in local (master) octopus server, and have staging and prod in our prod octopus server.

I guess my question is: how do we go on about managing environments and lifecycles between these two octopus servers?

Kind regards
Sujan

Hi Sujan,

Setting up the environment and Lifecycle in local does not mean you need to also setup the machines (unless you directly scope to them, which generally should be a rare occurrance).

You can manage them however you want. If you did have the shell of the Lifecycle and environment in master, but did not have the machines, and they only existed in the secondary staging/prod octopus then the export would not change that configuration when it was imported as it would only have the bones of the Lifecycle and Environment but it would ahve the correct scoping.

Vanessa