certplane-agent es un binario one-shot. Cada run hace el trabajo mínimo necesario para mantener los certificados al día y sale. Prográmalo con un timer de systemd (o cualquier scheduler).
CLI
| Comando | Propósito |
|---|---|
certplane-agent -c <config> enroll | Registro único. Ver Registro del agente. |
certplane-agent -c <config> run | Renueva la identidad si toca y luego cada certificado de servicio dentro de su ventana de renew_before. |
certplane-agent -c <config> check | Valida la configuración y los archivos en disco sin contactar a ningún servidor. |
-c / --config es obligatorio.
Qué hace run
Detalle completo en Cómo funciona. Resumiendo, en cada invocación:
- Toma
<state_dir>/agent.lock. - Falla rápido si falta
identity.cert— hay que registrar primero. - Renueva la identidad si expira dentro de
identity.renew_before(por defecto8h). - Para cada entrada en
certificates[]:- Genera la clave de servicio en
keysi falta; la reutiliza si existe. - Salta la entrada si el certificado existe, coincide con la clave y aún no entra en la ventana de
renew_before. - Si no, construye un CSR, pide un bundle al broker, valida que coincide con la clave local y los DNS configurados, escribe
cert/chain/fullchainy ejecutareload_command(conreload_timeout, por defecto30s).
- Genera la clave de servicio en
Unidad y timer de systemd
El rolecertplane_agent instala ambos. Manualmente:
/etc/systemd/system/certplane-agent.service
/etc/systemd/system/certplane-agent.timer
.service):
RandomizedDelaySec reparte la carga en una flota.
¿Cuándo llama el agente al broker?
Solo cuando un certificado entra en su ventana derenew_before o falta. Con renew_before: 720h (30 días) y un certificado de Let’s Encrypt de 90 días, cada host habla con el broker más o menos cada 60 días. Los otros disparos del timer ven que aún no toca, escriben certificate skipped, not in renewal window y salen.
Hooks de recarga
Si una entrada definereload_command, el agente lo ejecuta tras instalar — p. ej. systemctl reload nginx. Corre como el usuario del agente (certplane), así que normalmente necesita una regla de sudoers. Ver Comandos de recarga.
Logs
El agente loguea porstderr por defecto. systemd lo lleva al journal:
agent run startedservice key generated/service key reusedcertificate skipped, not in renewal windowrequesting certificatecertificate installedreload started/reload completed/reload failedagent run completed
Verificar los certificados instalados
dns_names. Si detecta inconsistencia, no instala el bundle.