Skip to content

v2.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Sep 15:04
· 2 commits to main since this release

Changelog

馃摙 Breaking Changes

鈿狅笍 Breaking changes: AnsibleCLI outputs (#139)

Per-host results were stored three times in the task outputs (vars.playbooks, the typed playbooks and the flat
vars.outputs), and stdout_lines/stderr_lines doubled every command result. They are now stored once, and by
default the full results are offloaded to Kestra's internal storage. This changes the shape of the outputs, so
flows that read them downstream may need updating.

1. outputs.<id>.vars.playbooks is removed

Per-host results now live only in outputs.<id>.playbooks.

Migration: replace outputs.<id>.vars.playbooks with outputs.<id>.playbooks.

2. outputs.<id>.vars.outputs no longer holds raw host results

In ALL mode it used to be a list of per-host result maps. In both modes it is now a map of the values declared
through the kestra module, and it is empty when the playbook declares none.

Migration: read per-host results from outputs.<id>.playbooks (or resultsUri) instead of vars.outputs.

3. playbooks carries light results by default

The new resultsStorage property defaults to STORE. With STORE, playbooks only keeps, per host:

  • changed, failed, skipped, unreachable, rc
  • msg, truncated to 1 KB (a list or map msg keeps its type and is cut only when its JSON is larger than 1 KB)
  • the last 1 KB of stderr, for failed or unreachable hosts only
  • the output of debug tasks (msg/var), with each value capped at 64 KB

Loop tasks keep the same subset per item under results. The full results are stored in a file exposed by the new
resultsUri output.

Any flow that reads stdout, stderr or other full fields from playbooks will now get missing or truncated
data.

Migration: read the full results with {{ read(outputs.<id>.resultsUri) }}, or set resultsStorage: INLINE to
keep the previous inline behaviour.

4. stdout_lines and stderr_lines are no longer captured

They are dropped at every nesting level, in both STORE and INLINE modes.

Migration: split stdout / stderr on newlines downstream.

5. maxOutputsSize now measures the whole task output

It used to measure only the merged outputs/playbooks payload. It now counts the whole serialized output
(vars, playbooks and the other output fields). With resultsStorage: STORE, the stored results file does not
count toward the limit. A task that stayed under the limit before can now fail, mostly in INLINE mode.

Migration: raise maxOutputsSize, use resultsStorage: STORE, or use outputsMode: EXPLICIT.

Also new (non-breaking)

  • New resultsStorage property (STORE default, INLINE) and resultsUri output.
  • A failed command now returns its playbooks and resultsUri on the failed attempt.

Commits

cli

  • 8e24ce4 馃毃 store AnsibleCLI per-host results once and offload them to internal storage (#139) - *outputs.<id>.vars.playbooks is removed (use outputs.<id>.playbooks);
    outputs.<id>.vars.outputs no longer holds the raw host results in ALL mode, it holds the
    kestra-module declared values in both modes; by default playbooks carries light results
    and the full ones are in resultsUri (set resultsStorage: INLINE for the previous inline
    behaviour); stdout_lines/stderr_lines are no longer captured; maxOutputsSize counts
    the whole output.
  • fix(cli): keep debug output once in light results and strip *_lines at every depth
  • debug tasks keep their output (msg or var) whole in the STORE-mode light result,
    minus ansible* keys, loop items included
  • stdout_lines/stderr_lines are removed recursively, in the light result and the results file
  • a non-string msg keeps its JSON type in the light result; over 1 KB of JSON it is
    replaced by the first 1 KB of its JSON serialization plus a truncation marker
  • fix(cli): always clean up results files and write them atomically
  • delete the per-command results files and the merged file on every path out of run()
  • log an ERROR when a failed run's outputs file was too large to read back
  • the callback writes its files to a temp file and renames it, keeping 0600 and the
    pre-created file's owner, falling back to an in-place write when it cannot
  • document that maxOutputsSize covers the whole task output
  • test that EXPLICIT + STORE exposes no secret inline or in the stored file
  • fix(cli): keep the Ansible failure when storing results fails and harden results merge

Storage errors after a failed command are logged instead of hiding the failure, the callback's in-place fallback commits its first byte last, a shrinking results file no longer loops forever, a missing resultsUri in STORE mode warns, and suppressed exceptions survive failedRun.

  • fix(cli): address review on results storage warnings and callback cleanup

Skip the missing-results warning after a failure or storage error and for
non-run invocations (--version, --syntax-check, --list-*), test the storage
failure paths, and strip _full in a finally so a mid-loop error cannot leak it.

---------*, closes #139

馃摌 Subtasks

version

  • b725c7e update to version 'v2.0.0'.
  • ad2bf8d update snapshot version 'v1.7.1-SNAPSHOT'.

Contributors

We'd like to thank the following people for their contributions:
Claude Opus 5.5, GitHub, Malay Dewangan, jymaire