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:
Spaces
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:
- Deployment via a “jump box” - to sit between Octopus Server and the intended target. This can be particularly useful for database deployments.
- Leverage external workers - delegating work to a machine other than the Octopus server. This can make the server more secure as it’s not running user-provided scripts. We have some documentation for this on https://octopus.com/docs/infrastructure/workers#external-workers
- Utilize proxy support in our tentacles - there is another help article which describes using proxies to jump across 2 environments to deploy on https://help.octopus.com/t/jumping-across-2-environment-boundaries/8053
Terraform Provider
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).