We have a number of environments that need to be secured so that I can control what is deployed to them. We are planning on installing multiple Octopus instances for our development, test and production environments so that we can maintain the segregation we require.
From there, we want to push our projects and deployment processes from our production Octopus instance into source control - and then sync between the remaining instances using the API.
How can I treat my Octopus instances as separate Environments?
Thank you for your question!
One thing I would say about the approach you have described is that trying to sync or connect separate Octopus instances together can be tricky to get right.
We generally don’t recommend this as Octopus wasn’t specifically designed with this in mind, but for this kind of set-up, we do have some considerations which you can read on https://octopus.com/docs/deployment-patterns/isolated-octopus-deploy-servers#IsolatedOctopusDeployservers-Tentaclecanbeinstalled(isolatedOctopusservers)
I’ve outlined some possible ways to set up your Octopus instances as Environments below:
An alternative to having separate instances of Octopus could be to utilize Spaces.
You could configure a Space for each location where you require a ‘hard wall’. You can find out more in our blog post on https://octopus.com/blog/spaces-introduction.
The downside for using Spaces is that each Space is provisioned in the one Octopus instance, and therefore this might not be considered truly isolated. We also don’t have a way to migrate projects between spaces easily right now, but it’s one of our most requested features, so that could change in the future.
Other alternative options
Similarly to keep each environment isolated, you could also look to employ some other options, such as:
If you do require separate instances and wish to have a way to manage them using a code repository, then I would suggest taking a look at our documentation on deployment process as code. You could then configure your Octopus instances using the Terraform provider (we utilize this method ourselves when provisioning cloud instances for our customers).