openstack overcloud deploy: plan-environment.yaml not found

For one reason or another, I sometimes run into the following error when trying to deploy an OpenStack TripleO overcloud in my lab:

ClientException: Object GET failed:
  /overcloud/plan-environment.yaml 404 Not Found

This usually occurs after impatiently cancelling an overcloud deployment – strongly not recommended of course. The overcloud plan, which is stored in a Swift container, is left missing one or more objects.

Given that Mistral (OpenStack’s workflow service) is meant to first delete the existing plan before continuing, it’s an odd error. The solution, it turns out, is not quite as straight forward as manually deleting the plan.

Deleting an overcloud plan is a restricted operation when that plan is tied to an existing stack, and deleting the stack would mean deleting my overcloud. This was not a fresh deployment, but rather a stack update, so funnily enough this was not my preferred approach. Given the overcloud plan is just stored in a Swift object container though, we can modify it directly:

## Source undercloud environment variables
$ . stackrc
## Recursively delete all objects and the container
$ openstack container delete --recursive overcloud

From here, running the overcloud deployment again creates the Swift object container and populates it with the deployment plan, however this is still prone to errors. My own deployment kept failing with Mistral validation errors, despite being a “valid” plan previously.

The solution is to run the undercloud installation again. This is essentially a bunch of idempotent workflows, so should be completely safe to run and re-run, though take care that your undercloud config file has not changed unless you expect it to.

$ openstack undercloud install

Once the install has completed you should notice that the Swift overcloud container has been recreated and populated with all the required plan objects. You can now kick off that overcloud deploy.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.