saltstack / salt

Software to automate the management and configuration of any infrastructure or application at scale. Get access to the Salt software package repository here:
https://repo.saltproject.io/
Apache License 2.0
14.17k stars 5.48k forks source link

[BUG] Minions do not properly report SLS rendering failure (WAS: state.sls_exists broken on Debian) #66934

Open nf-brentsaner opened 1 month ago

nf-brentsaner commented 1 month ago

Description On both Debian 11 and 12 minions, state.sls_exists is broken. This same issue does not occur on other minions (e.g. AlmaLinux 8.x/9.x).

Setup Please be as specific as possible and give set-up details.

Steps to Reproduce the behavior e.g.:

example top.sls:

base:
  '*':
    - foo.bar.baz

salt://foo/bar/baz/init.sls:

{% set incl_sls = sls + '.init_' +  grains['kernel'].lower() %}

{% if salt['state.sls_exists'](incl_sls) %}
include:
  - {{ incl_sls }}
{%- else %}
Unsupported Include:
  test.nop:
    - name: The kernel "{{ grains['kernel'].lower() }}" could not include "{{ incl_sls }}".
{% endif %}

salt://foo/bar/baz/init_linux.sls:

Successfully Included:
  test.nop:
    - name: 'The include worked.'

Debian, both 11 and 12, will report `The kernel "linux" could not include "foo.bar.baz.init_linux". Despite the SLS existing, even in the cache on the minion.

AlmaLinux 8 and 9 will appropriately apply the Successfully Included state.

Expected behavior Debian to properly know that the SLS does, indeed, exist.

Screenshots N/A

Versions Report

salt --versions-report (Provided by running salt --versions-report. Please also mention any differences in master/minion versions.) (Master runs 3007.1 via onedir bootstrap on AlmaLinux 9.4. The below is a minion experiencing the bug.) ```yaml Salt Version: Salt: 3007.1 Python Version: Python: 3.10.14 (main, Apr 3 2024, 21:30:09) [GCC 11.2.0] Dependency Versions: cffi: 1.16.0 cherrypy: 18.8.0 dateutil: 2.8.2 docker-py: Not Installed gitdb: Not Installed gitpython: Not Installed Jinja2: 3.1.4 libgit2: Not Installed looseversion: 1.3.0 M2Crypto: Not Installed Mako: Not Installed msgpack: 1.0.7 msgpack-pure: Not Installed mysql-python: Not Installed packaging: 23.1 pycparser: 2.21 pycrypto: Not Installed pycryptodome: 3.19.1 pygit2: Not Installed python-gnupg: 0.5.2 PyYAML: 6.0.1 PyZMQ: 25.1.2 relenv: 0.16.0 smmap: Not Installed timelib: 0.3.0 Tornado: 6.3.3 ZMQ: 4.3.4 Salt Package Information: Package Type: onedir System Versions: dist: debian 12.7 bookworm locale: utf-8 machine: x86_64 release: 6.1.0-13-amd64 system: Linux version: Debian GNU/Linux 12.7 bookworm ```

Additional context N/A

nf-brentsaner commented 1 month ago

Actually, changing the bug- It was falsely reporting the SLS doesn't exist because of a Debian-specific rendering issue within that SLS.

Salt minions should do a better job of reporting failure in SLS rendering vs. just acting as if they don't exist. This behavior was much more reliable/predictable in pre-3006.