Provisioning workflow in OD

Hi,
I’m currently looking at provisioning environments through OD when users promote to a certain environment to test our setup packages on a clean environment everytime. Basically the scenario looks like:

  1. Promote to setup environment
  2. Install process provisions a new environment
  3. Tentacle is automatically installed / configured, and attached to the environment in OD
  4. The scope is updated through the health check
  5. Our version of the setup package is pushed to the deployment target and installed through a silent install

I do have some questions before I kick this off.

You can’t deploy a release to an environment that hasnt got any existing deployment target, how is this supposed to work with automatic provisioning?

During deployment, can I update the scope of the deployment to only target the specific deployment target that I’ve provisioned, not already existing servers in the environment?

Hi Corona,

Thanks for getting in touch.

As part of the Octopus 3.4 release, we included Elastic and Transient Environment features that will help you in this situation. To help introduce this feature at a higher level, there’s also a blog post which may you to get started.

You can’t deploy a release to an environment that hasnt got any existing deployment target, how is this supposed to work with automatic provisioning?
The specific area that will help you here is the section titled “Overriding the release used for automatic deployments” in the keeping deployment targets up to date documentation.

When you’re unable to deploy a release to an environment because it has no deployment targets, you can create a release override to inform Octopus that “When a deployment target comes online, I want you to deploy [this] release”

Octopus will then automatically create a release for you as those new deployment targets come online.

During deployment, can I update the scope of the deployment to only target the specific deployment target that I’ve provisioned, not already existing servers in the environment?
You can manually create another deployment of the same release and (from the “Advanced” deployment menu) select “Deploy to a specific subset of deployment targets”. However, Octopus can also automate this for you using project triggers from the elastic environments documentation above.

If you’re also dealing with deployment targets that come online / go offline periodically, you’d benefit from setting your project’s connectivity settings to “skip machines if they are or become unavailable” (see the Deploying to transient targets. This will let you deploy your project, even if some of your Tentacles are currently offline. When used in conjunction with project triggers, when Tentacles come online Octopus will auto-deploy for you.

Hope this helps.

Cheers
Mark

Hmm yeah but that effectively rules out using OD as a source of the provisioning since it would only be able to respond to a new machine being attached to the environment. If theres currently no deployment targets in it I can’t provision from OD because the deployment process won’t start with an empty environment. I would have to start the provisioning from outside OD which I think is a pity because it makes the workflow more complicated (for lets say, a tester).

Hi Corona,

Could you add a Cloud Region to your environments to act as a placeholder, so you don’t have an empty environment to begin with? We find cloud regions handy to get around the “empty environment” issue when running tests ourselves.

Cheers
Mark

This looks promising, I will report back if it doesn’t work when I’m finished, thanks for the help.