Simular y después confirmar

Ver en Markdown

Cómo la simulación, el motivo y la versión esperada hacen que cada escritura en OpenWAF se pueda revisar y no pise cambios ajenos.

En esta página

Una escritura de configuración en OpenWAF lleva, además de sus datos, tres cosas: un motivo, una marca opcional de simulación y la versión esperada de la zona. Todas las interfaces las usan igual.

El motivo

Toda escritura de configuración necesita un motivo de 1 a 500 caracteres (sin contar los espacios de los extremos), sin saltos de línea ni otros caracteres de control. Se guarda en la versión y en la auditoría. Sin él, la API responde 422 reason_required.

La única excepción es dar de alta una zona: la API la acepta sin motivo y guarda alta de la zona. La CLI pide --reason igualmente.

La simulación

Una simulación ejecuta la escritura completa, con la validación, la instantánea nueva y la configuración de cada nodo de borde que sirve la zona, dentro de una transacción, y después la deshace. Falla exactamente donde fallaría la escritura real y no toca ni el DNS ni el borde. La respuesta es el plan:

200 OK
{
  "dry_run": true,
  "from_version": 7,
  "to_version": 8,
  "diff": {
    "from": 7,
    "to": 8,
    "changes": [
      {"path": "settings.hsts.max_age", "op": "replace", "from": 0, "to": 300}
    ]
  },
  "warnings": []
}

Cada cambio tiene una ruta (path), una operación (op: add, remove o replace) y los valores de antes y de después. Las listas se identifican por identidad, no por posición: rules[id=12], records[id=…], certificates[hostname=…]. warnings enumera lo que la escritura dejaría fuera, como un sitio que no se ha podido construir. Si to_version es igual a from_version y no hay diferencias, la escritura no cambiaría nada.

La versión esperada

La confirmación lleva la versión contra la que simulaste. Si la zona sigue en esa versión, la escritura se aplica y crea la siguiente. Si alguien ha cambiado la zona entretanto, no se aplica nada y la API responde:

412 Precondition Failed
{"error": {"code": "version_conflict", "message": "the configuration changed: the current version is 9"}, "current_version": 9}

Mira qué ha cambiado (zones diff, Cambios → Historial), vuelve a simular y revisa el plan nuevo antes de confirmar. Un conflicto de versión nunca aplica un cambio a medias.

En cada interfaz

Cada editor abre un diálogo con la Vista previa del cambio y el campo Motivo del cambio; Aplicar el cambio lo envía con la versión de la vista previa. Si hay un conflicto, el panel recarga la zona, vuelve a simular tu cambio y te pide que revises la vista previa nueva.

Cambios que no se versionan

Algunas escrituras quedan en la auditoría pero no crean versión de la zona:

  • Se simulan, no se versionan: las purgas de caché y los certificados de origen (emitir y revocar). Llevan motivo y admiten simulación, pero no versión esperada.
  • No se simulan: los clientes, la marca y la marca blanca. El --dry-run de la CLI solo enseña lo que enviaría y no envía nada.
  • Sin motivo: comprobar ahora la delegación de una zona (zones check) y escanear la preparación para agentes no cambian la configuración.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar