:_mod-docs-content-type: ASSEMBLY
[id="microshift-greenboot"]
= The Greenboot health check framework
include::_attributes/attributes-microshift.adoc[]
:context: microshift-greenboot

toc::[]

Greenboot is the generic health check framework for the `systemd` service on `rpm-ostree` systems such as {op-system-ostree-first}. This framework is included in {microshift-short} installations with the `microshift-greenboot` and `greenboot-default-health-checks` RPM packages.

Greenboot health checks run at various times to assess system health and automate a rollback to the last healthy state in the event of software trouble, for example:

* Default health check scripts run each time the system starts.
* In addition the to the default health checks, you can write, install, and configure application health check scripts to also run every time the system starts.
* Greenboot can reduce your risk of being locked out of edge devices during updates and prevent a significant interruption of service if an update fails.
* When a failure is detected, the system boots into the last known working configuration using the `rpm-ostree` rollback capability. This feature is especially useful automation for edge devices where direct serviceability is either limited or non-existent.

A {microshift-short} application health check script is included in the `microshift-greenboot` RPM. The `greenboot-default-health-checks` RPM includes health check scripts verifying that DNS and `ostree` services are accessible. You can create your own health check scripts for the workloads you are running. You can write one that verifies that an application has started, for example.

[NOTE]
====
Rollback is not possible in the case of an update failure on a system not using `rpm-ostree`. This is true even though health checks might run.
====

include::modules/microshift-greenboot-dir-structure.adoc[leveloffset=+1]

include::modules/microshift-greenboot-microshift-health-script.adoc[leveloffset=+1]

include::modules/microshift-greenboot-systemd-journal-data.adoc[leveloffset=+1]

[role="_additional-resources"]
.Additional resources
* xref:../microshift_running_apps/microshift-applications.adoc#microshift-manifests-example_applications-microshift[Auto applying manifests]

include::modules/microshift-greenboot-updates-workloads.adoc[leveloffset=+1]

include::modules/microshift-greenboot-workloads-validation.adoc[leveloffset=+1]

include::modules/microshift-greenboot-health-check-log.adoc[leveloffset=+1]

include::modules/microshift-greenboot-prerollback-log.adoc[leveloffset=+1]

include::modules/microshift-greenboot-check-update.adoc[leveloffset=+1]

[id="additional-resources_microshift-greenboot_{context}"]
[role="_additional-resources_microshift-greenboot"]
== Additional resources
* xref:../microshift_running_apps/microshift-greenboot-workload-scripts.adoc#microshift-greenboot-workload-scripts[Greenboot workload health check scripts]