Browse Source

Add spec for the Mistral to Ansible work

Change-Id: Id4a71934bad616e0d9f5aa98fdde8ef2608b2eb2
Signed-off-by: Kevin Carter <>
Dougal Matthews 2 years ago
committed by Kevin Carter
No known key found for this signature in database GPG Key ID: CE94BD890A47B20A
  1. 3
  2. 177


@ -1,3 +0,0 @@


@ -0,0 +1,177 @@
This work is licensed under a Creative Commons Attribution 3.0 Unported
Replace Mistral with Ansible
Include the URL of your launchpad blueprint:
The goal of this proposal is to replace Mistral in TripleO with Ansible
Problem Description
Mistral was originally added to take the place of an “API” and provide common
logic for tripleoclient and TripleO UI. After the TripleO UI was removed, the
only consumer of Mistral is tripleoclient. This means that Mistral now adds
unnecessary complexity.
Proposed Change
Remove Mistral from the TripleO undercloud and convert all Mistral workbooks,
workflows and actions to Ansible playbooks within tripleo-ansible. tripleoclient
will then be updated to execute the Ansible playbooks rather than the Mistral
The only other alternative candidate is to keep using Mistral and accept the
complexity and reinvest in the project.
Security Impact
* As the code will be re-writing Mistral workflows that currently deal with
passwords, tokens and secrets we will need to be careful. However the logic
should be largely the same.
* With the eventual removal of Mistral and Zaqar two complex systems can be
removed which will reduce the surface area for security issues.
* The new Ansible playbooks will only use the undercloud OpenStack APIs,
therefore they shouldn't create a new attack vector.
Upgrade Impact
* Upgrades will need to remove Mistral services and make sure the Ansible
playbooks are in place.
* Older versions of tripleoclient will no longer work with the undercloud as
they will expect Mistral to be present.
* Most of the data in Mistral in ephemeral, but some longer term data is stored
in Mistral environments. This data will likely be moved to Swift.
Other End User Impact
The output of CLI commands will change format. For example, the Mistral
workflow ID will no longer be included and other Ansible specific output may be
included. Where possible we will favour streaming Ansible output to the user,
making tripleoclient very light and transparent
Some CLI commands, such as introspection will need to fundamentally change their
output. Currently they send real time updates and progress to the client with
Zaqar. Despite moving the execution locally, we are unable to easily get
messages from a Ansible playbook while it is running. This means the user may
need to wait a long time before they get any feedback.
Performance Impact
There is no expected performance impact as the workflow should be largely the
same. However, the Ansible playbooks will be executed where the user runs the
CLI rather than by the Mistral server. This could then be slower or faster
depending on the resources available to the machine and the network connection
to the undercloud.
The undercloud itself should have more resources available since it wont be
running Mistral or Zaqar.
Other Deployer Impact
If anyone is using the Mistral workflows directly, they will stop working. We
currently don't know of any users doing this and it was never documented.
Developer Impact
Developers will need to contribute to Ansible playbooks instead of Mistral
workflows. As the pool of developers that know Ansible is larger than those
that know Mistral this should make development easier. Ansible contributions
will likely expect unit/functional tests.
Primary assignee:
Other contributors:
Work Items
- Migrate each Mistral workflows to Ansible playbooks.
- Migrate or replace custom Mistral actions to Ansible native components.
- Remove Mistral and Zaqar.
- Update documentation specific to Mistral.
- Extend our auto-documentation plugin to support playbooks within
tripleo-ansible. This will allow us to generate API documentation for all
playbooks committed to tripleo-ansible, which will include our new `cli`
prefixed playbooks.
Since this change will largely be a re-working of existing code the changes
will be tested by the existing CI coverage. This should be improved and
expanded as is needed.
Documentation Impact
Any references to Mistral will need to be updated to point to the new ansible