Multi-tier rolling upgrades



I need to understand the chef constructs to be used to deploy a multi-tier
service in the following manner:

The service is composed of 3 independent clusters A, B & C, each supporting a
different tier. The deployment needs to proceed in parallel on A & B, picking 3
hosts at a time for a rolling deployment. If more than 2 hosts fail during this
phase, a complete rollback is carried out on A & B. Else, we proceed to carry
out a rolling deployment on C with a batch size of 3 and any failure resulting
in rollback of A & B. I’d like to understand if chef (by itself or with another
mechanism that works well with Chef) can be used to address the above scenario.
I understand that the chef client must be run in non-daemon mode to achieve
control on the time of deployment. However, the chef documentation doesn’t
mention other tools/components of chef (e.g. any knife plugin) & the manner in
which to use them in conjuction to implement the what we need. I’ve come across
dreadnot, but seems more like a workaround for such an idiom not being
supported inherently by chef. Any experiences/thoughts that could be shared in
this regard would be very valuable. Thanks.