Witness configuration
Ballast never reimplements cluster quorum. Quorum, vote counting and witness
communication all belong to Windows Failover Clustering, Ballast's role is to
declare which witness a cluster should use and reconcile the cluster to that
declaration via Set-ClusterQuorum, the same as an operator would by hand.
Declaring a witness is coordination; counting votes ourselves would not be.
Witness types
| Type | Notes |
|---|---|
| File share witness | A single SMB share reachable by every cluster member. Simplest option for a single site or a small ROBO deployment. |
| Cloud witness | An Azure Storage account used as the witness, avoiding a dependency on any one site. Fully supported as declared desired state, the same as file share and disk witnesses. |
| Disk witness | A shared disk dedicated to quorum. Requires shared storage already provisioned. |
Declaring a witness
A witness is part of a ClusterSpec's quorum configuration. On apply, the
centre drives the cluster's designated node to run Set-ClusterQuorum against
the declared witness; the agent does not invent a witness choice on its own.
A cluster's Summary tab shows this as declared, live state, not just an API field:

Quorum and Ballast's autonomy story
Quorum and the centre-offline autonomy story are deliberately separate concerns. A cluster keeps deciding failover and ownership via its own quorum even if the Ballast centre is unreachable, that is Windows Failover Clustering's job, unaffected by Ballast. What the centre being offline changes is only whether new desired state can be declared; each agent keeps enforcing what it already has, cluster membership and quorum notwithstanding.
Changing a witness later
Changing the declared witness (e.g. moving from a file share to a cloud
witness) is the same reconcile pattern as any other desired-state change:
update the ClusterSpec, and the designated node's agent drives
Set-ClusterQuorum again. Because witness config affects quorum, it is held
for explicit operator approval rather than applied automatically, see
Auto-revert vs approval-gated.