diff --git a/changelog/65231.fixed.md b/changelog/65231.fixed.md new file mode 100644 index 000000000000..50d225e7452f --- /dev/null +++ b/changelog/65231.fixed.md @@ -0,0 +1,2 @@ +Install logrotate config as /etc/logrotate.d/salt-common for Debian packages +Remove broken /etc/logrotate.d/salt directory from 3006.3 if it exists. diff --git a/pkg/common/salt-common.logrotate b/pkg/common/logrotate/salt-common similarity index 100% rename from pkg/common/salt-common.logrotate rename to pkg/common/logrotate/salt-common diff --git a/pkg/debian/salt-common.conffiles b/pkg/debian/salt-common.conffiles new file mode 100644 index 000000000000..595731d1d020 --- /dev/null +++ b/pkg/debian/salt-common.conffiles @@ -0,0 +1 @@ +/etc/logrotate.d/salt-common diff --git a/pkg/debian/salt-common.dirs b/pkg/debian/salt-common.dirs index 5c6dd29e224e..381ec1f48ce0 100644 --- a/pkg/debian/salt-common.dirs +++ b/pkg/debian/salt-common.dirs @@ -4,3 +4,4 @@ /usr/share/fish/vendor_completions.d /opt/saltstack/salt /etc/salt +/etc/logrotate.d diff --git a/pkg/debian/salt-common.install b/pkg/debian/salt-common.install index 09bb9e28099a..4f8dac552ece 100644 --- a/pkg/debian/salt-common.install +++ b/pkg/debian/salt-common.install @@ -1,4 +1,4 @@ -pkg/common/salt-common.logrotate /etc/logrotate.d/salt +pkg/common/logrotate/salt-common /etc/logrotate.d pkg/common/fish-completions/salt-cp.fish /usr/share/fish/vendor_completions.d pkg/common/fish-completions/salt-call.fish /usr/share/fish/vendor_completions.d pkg/common/fish-completions/salt-syndic.fish /usr/share/fish/vendor_completions.d diff --git a/pkg/debian/salt-common.preinst b/pkg/debian/salt-common.preinst index 0e4ce9c59f7f..0e45d2399f68 100644 --- a/pkg/debian/salt-common.preinst +++ b/pkg/debian/salt-common.preinst @@ -31,5 +31,9 @@ case "$1" in -s $SALT_SHELL \ -g $SALT_GROUP \ $SALT_USER + + # Remove incorrectly installed logrotate config - issue 65231 + test -d /etc/logrotate.d/salt && rm -r /etc/logrotate.d/salt || /bin/true + ;; esac diff --git a/pkg/rpm/salt.spec b/pkg/rpm/salt.spec index 6cc4e85c23c3..4659c9fd3433 100644 --- a/pkg/rpm/salt.spec +++ b/pkg/rpm/salt.spec @@ -266,7 +266,7 @@ install -p -m 0644 %{_salt_src}/pkg/common/salt-proxy@.service %{buildroot}%{_un # Logrotate #install -p %{SOURCE10} . mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d/ -install -p -m 0644 %{_salt_src}/pkg/common/salt-common.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/salt +install -p -m 0644 %{_salt_src}/pkg/common/logrotate/salt-common %{buildroot}%{_sysconfdir}/logrotate.d/salt # Bash completion mkdir -p %{buildroot}%{_sysconfdir}/bash_completion.d/ diff --git a/pkg/tests/integration/test_logrotate_config.py b/pkg/tests/integration/test_logrotate_config.py new file mode 100644 index 000000000000..fea0123b6eb6 --- /dev/null +++ b/pkg/tests/integration/test_logrotate_config.py @@ -0,0 +1,46 @@ +""" +Tests for logrotate config +""" + +import pathlib + +import packaging.version +import pytest + +pytestmark = [ + pytest.mark.skip_unless_on_linux, +] + + +@pytest.fixture +def logrotate_config_file(grains): + """ + Fixture for logrotate config file path + """ + if grains["os_family"] == "RedHat": + return pathlib.Path("/etc/logrotate.d", "salt") + elif grains["os_family"] == "Debian": + return pathlib.Path("/etc/logrotate.d", "salt-common") + + +def test_logrotate_config(logrotate_config_file): + """ + Test that logrotate config has been installed in correctly + """ + assert logrotate_config_file.is_file() + assert logrotate_config_file.owner() == "root" + assert logrotate_config_file.group() == "root" + + +def test_issue_65231_etc_logrotate_salt_dir_removed(install_salt): + """ + Test that /etc/logrotate.d/salt is not a directory + """ + if install_salt.prev_version and packaging.version.parse( + install_salt.prev_version + ) <= packaging.version.parse("3006.4"): + pytest.skip("Testing a downgrade to 3006.4, do not run") + + path = pathlib.Path("/etc/logrotate.d/salt") + if path.exists(): + assert path.is_dir() is False