Error state: check-failed utilizando canonical-livepatch

Yo utilizo la versión gratuita de canonical-livepatch para unos pocos servidores dedicados (yo virtualizo, y es incómodo perder uptime en las máquinas virtuales).

Al activar el servicio en una máquina (utilizando una plantilla Ubuntu 16.04 de OVH) canonical-livepatch funciona momentáneamente, pero al cabo de unas horas aparece un error en el journal: Bad server status code: 403. URL: https://livepatch.canonical.com/api/machine/<id> {"error": "Invalid Machine Token"}.

Además aparece otro error de tipo check-failed, que impide seguir bajando actualizaciones del servicio.
sudo canonical-livepatch status --verbose
(...)
status: - kernel: 4.4.0-45.66-generic
running: true
livepatch: checkState: check-failed (...)

Resolviendo el error

La plantilla Ubuntu 16.04 de OVH, a pesar de ser la misma para los clientes, tiene que asegurarse que ciertos datos no sean los mismos. Esta debe generar, por ejemplo, los pares de claves para SSH por máquina. La plantilla viene con un parámetro de systemd llamado machine-id que en teoría debe ser única por máquina y se genera aleatoriamente al momento de la instalación.

Canonical-livepatch utiliza éste campo para crear una pareja única machine-id<=>token, creando así el machine-token para la máquina. Si alguien activa su servicio con tu machine-id, tu machine-token será revocado de inmediato, y como la plantilla de OVH no tomó en cuenta eso, entonces así llegamos a la falla.

Necesitamos obtener nuestro machine-id original para ver que tenemos este fallo: cat /etc/machine-id
5b4291032856154f1caf5ffb5694cdc3

Luego lo cambiamos por otra cadena aleatoria: head /dev/urandom | md5sum | cut -d " " -f 1 | sudo tee /etc/machine-id El manual de systemd tiene una utilidad para generar otro machine-id, pero necesita un rootfs no booteado. Por ese motivo, nos aseguraremos de reiniciar la máquina ahora mismo, para evitar fallas raras.