Adding Diego release to Cloud Foundry Release

Johannes Hiemer
12. August 2015
Reading time: 3 min

The following blog post will document how to add the Diego release (Diego release). This post contains the following sections:

  • Prerequisites
  • Stub creation
  • Deployment
  • Verification

Prerequisites

Before deploying the Diego release, it is fortunate to have a running version of the CF release (CF Release). In this case it is very important to rely in detail on the specifications made by the release notes. That means you should always try to stick to the versions of the stemcells and the corresponding Diego releases. Important here is, that the releases of Diego tend to change quite regularly, so it might happen the case that you can use a later release (but only a few days).

For this case study we use v231 (https://github.com/cloudfoundry/cf-release/releases/tag/v231).

In the release notes you can find different general recommendations:

  • Stemcell Version: 2950
  • CC Api Version: 2.29.0

And specific for Diego:

  • final release 0.1304.0

Hint: To checkout a specific version of Diego or CF, go to the release directory and enter:

git checkout version v231.

Keep in mind to do a for CF

./update

and

./scripts/update

for Diego.

Stub creation

To deploy Diego release you need to override some specific predefined values via spiff. As there is no recommendation for a clean and valid Openstack Diego deployment I created the following files:

  • workspace/releases/cf-custom/diego/additional-jobs.yml
  • workspace/releases/cf-custom/diego/iaas-settings.yml
  • workspace/releases/cf-custom/diego/instance-count-overrides.yml
  • workspace/releases/cf-custom/diego/persistent-disk-overrides.yml
  • workspace/releases/cf-custom/diego/property-overrides.yml

While I took the additional-jobs.yml, the instance-count-overrides.yml,  the persistent-disk-overrides.yml and the property-overrides.yml from the directory of the bosh-lite deployment (https://github.com/cloudfoundry-incubator/diego-release/tree/develop/manifest-generation/bosh-lite-stubs), the file iaas-settings.yml is customized for Openstack:

https://gist.github.com/jhiemer/31bd109cb22ac3c1c90a

Deployment

The next step is to generate the directors id-file needed for further deployment steps:

cd ~/workspace/releases/diego-release
./scripts/print-director-stub > ~/workspace/deployments/director.yml

If created successfully, you can now create the diffs needed for Diego:

cd ~/workspace/releases/cf-release n
./generate_deployment_manifest openstack n
~/workspace/deployments/director.yml n
~/workspace/releases/diego-release/stubs-for-cf-release/enable_consul_with_cf.yml n
~/workspace/releases/diego-release/stubs-for-cf-release/enable_diego_ssh_in_cc.yml n
~/workspace/releases/cf-custom/cf-stub.yml > ~/workspace/deployments/diego/cf.yml

In the next step, set the deployment, upload the release and deploy:

bosh deployment ~/workspace/deployments/diego/cf.yml
bosh create release --force && bosh -n upload release && bosh -n deploy

Afterwards, we need to change to the working directory of Diego:

cd ~/workspace/releases/diego-release

And deploy the Diego part:

./scripts/generate-deployment-manifest n
~/workspace/deployments/director.yml n
~/workspace/releases/cf-custom/diego/property-overrides.yml n
~/workspace/releases/cf-custom/diego/instance-count-overrides.yml n
~/workspace/releases/cf-custom/diego/persistent-disk-overrides.yml n
~/workspace/releases/cf-custom/diego/iaas-settings.yml n
~/workspace/releases/cf-custom/diego/additional-jobs.yml n
~/workspace/deployments/diego > ~/workspace/deployments/diego/diego.yml

bosh deployment ~/workspace/deployments/diego/diego.yml
bosh create release --force && bosh -n upload release && bosh -n deploy

Verification

To verify if the deployment was successful, you can easily use an existing app and run the following commands. Before doing this, you need to install the CF Diego Plugin (https://github.com/cloudfoundry-incubator/diego-design-notes/blob/master/migrating-to-diego.md#installing-the-diego-beta-cli-plugin).

cf api --skip-ssl-validation api.X.X.X.X.xip.io
cf auth admin admin

cf create-org diego
cf t -o diego

cf create-space diego
cf t -s diego

Push the application.

cf push yourApp --no-start

And then the final moment…

cf enable-diego yourApp
cf start yourApp