diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..45f46f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,103 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a packager +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.kitchen +.kitchen.local.yml + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ diff --git a/.travis.yml b/.travis.yml index a0e3087..73a2f88 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,4 +8,13 @@ services: before_install: - bundle install -script: bundle exec kitchen verify +env: + matrix: + - INSTANCE: default-debian-9 + - INSTANCE: default-ubuntu-1804 + - INSTANCE: default-fedora-27 + - INSTANCE: default-centos-7 + +script: + - bundle exec kitchen verify ${INSTANCE} + diff --git a/logrotate/install.sls b/logrotate/install.sls index ffcc8c9..350d48a 100644 --- a/logrotate/install.sls +++ b/logrotate/install.sls @@ -3,6 +3,7 @@ {% from "logrotate/map.jinja" import logrotate with context %} +{% set pkgs = [logrotate.pkg] if logrotate.pkg is string else logrotate.pkg %} logrotate-pkg: pkg.installed: - - name: {{ logrotate.pkg }} + - pkgs: {{ pkgs }} diff --git a/logrotate/map.jinja b/logrotate/map.jinja index 8de9ccc..9ca59f4 100644 --- a/logrotate/map.jinja +++ b/logrotate/map.jinja @@ -2,23 +2,56 @@ # vim: ft=jinja {% import_yaml 'logrotate/defaults.yaml' as default_settings %} -{% import_yaml "logrotate/osfamilymap.yaml" as os_family_map %} -{% import_yaml "logrotate/osmap.yaml" as os_map %} -{% set osfam = salt['grains.filter_by']( - os_family_map, - grain='os_family', - ) or {} %} -{% set os = salt['grains.filter_by']( - os_map, - grain='os', - ) or {} %} +{% set os_family_map = salt['grains.filter_by']({ + 'Arch': { + 'service': 'logrotate.timer', + 'default_config': { + 'tabooext': '+ .pacorig .pacnew .pacsave', + }, + }, + 'Debian': { + 'default_config': { + 'compress': True, + }, + }, + 'RedHat': { + 'pkg': [ + 'logrotate', + 'cronie' + ], + 'service': 'crond', + 'default_config': { + 'dateext': True, + }, + }, + 'Suse': { + 'login_records_jobs': False, + 'default_config': { + 'dateext': True, + 'compresscmd': '/usr/bin/xz', + 'uncompresscmd': '/usr/bin/xzdec', + }, + }, + }, + grain="os_family", + merge=salt['pillar.get']('logrotate:lookup')) or {} +%} -{% do salt['defaults.merge'](default_settings['logrotate'], osfam) %} -{% do salt['defaults.merge'](default_settings['logrotate'], os) %} +{% set os_map = salt['grains.filter_by']({ + 'Ubuntu': { + 'default_config': { + 'su': 'root syslog' + }, + }, + }, + grain="os", + merge=os_family_map) or {} +%} -{% set logrotate = salt['pillar.get']( - 'logrotate:lookup', - default=default_settings['logrotate'], - merge=True, - ) %} +{% set logrotate = salt['grains.filter_by']( + default_settings, + merge=os_map, + base='logrotate', + ) +%} diff --git a/test/integration/default/controls/base.rb b/test/integration/default/controls/base.rb index a7a3d7a..d2935c1 100644 --- a/test/integration/default/controls/base.rb +++ b/test/integration/default/controls/base.rb @@ -20,7 +20,14 @@ describe file('/etc/logrotate.d') do its('mode') { should cmp '0755' } end -describe service('cron') do +case os[:name] +when 'redhat', 'centos', 'fedora' + service = 'crond' +else + service = 'cron' +end + +describe service(service) do it { should be_installed } it { should be_enabled } it { should be_running }