Run this after the canary has taken the change and before the rolling deployment starts. It is the decision point: everything above the rollout depends on somebody being able to say that one real host took this change and is demonstrably fine.
The commands assume a canary called web01.example.com in the web group.
Substitute your own. The uri checks run from the controller with
-c local so that the request comes from off the host, which is the point.
What a failure means
A canary finding is not a delay, it is the canary doing its job. The correct
response to any critical failure here is to stop the rollout, fix the change,
and run the canary again from the top - not to fix it on the canary by hand and
proceed, which produces a fleet configured by the playbook and one host
configured by you.
The warn items are about whether the rollout will be tidy. They do not
invalidate the canary result.
Access this needs
Every command reads. setup, service_facts and uri gather or fetch;
--check --diff reports without changing. Two of them are worth naming:
The playbook runs at applied-cleanly and idempotent are real runs, not
check-mode runs - they are what puts the change on the canary and then proves it
converged. They change the canary and nothing else, because --limit restricts
them to it, which is exactly why the limit item comes first.
The journalctl invocation goes through the command module. It reads, but
the command module will run whatever you give it, so adapt that item with
care.
Where the evidence goes
The recap lines, the uri results and the soak period go in the change record.
So does the person who decided the canary passed - because “the canary was
green” is a judgement about criteria that were written down beforehand, and the
record should show both the criteria and who applied them.
Sign-off
- Canary run by: ____________ Time: ___________
- Soak start: _______________ Soak end: _______
- Promotion approved by: ____ Time: ___________