Skip to content

Kibana readiness check fails on dash /bin/sh (set -o pipefail without bash executable) #201

Description

@Oddly

The scheduled full-distro molecule matrix converge-fails for every scenario that deploys Kibana (es_kibana, elasticstack_default, cert_renewal) on debian12, ubuntu2204 and ubuntu2404, while rockylinux, debian13 and ubuntu2604 pass. I found this while stress-testing the runner host, so it is not new, but it is worth fixing on its own.

The failing task is the Kibana readiness wait. Its shell block starts with set -o pipefail but the task has no args: executable: /bin/bash, so Ansible runs it under /bin/sh. On the images where /bin/sh is dash (debian12, ubuntu2204, ubuntu2404) dash rejects the option and the command dies immediately with set: Illegal option -o pipefail (rc 2) on every one of the 60 retries, so converge never gets past the wait. Where /bin/sh is bash the same block runs fine, which is why the other distros are green and why the PR-time matrix (rockylinux10 + debian13) never trips over it.

There are two copies of this same block, both missing the executable:

  • roles/kibana/tasks/restart_and_verify_kibana.yml (the set -o pipefail at line 32)
  • roles/kibana/tasks/main.yml (line 158)

The fix is to add the same args: executable: /bin/bash these blocks need, which is already the convention elsewhere in the collection, for example roles/kibana/tasks/kibana-security.yml. Both copies should move together so the readiness wait behaves identically wherever it runs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions