The following blog post will document how to add the Diego release (Diego release). This post contains the following sections:
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:
And specific for Diego:
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.
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:
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
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
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