1
0
Fork 0
Logrotate SaltStack Formula
Go to file
Imran Iqbal 57c88a8140
fix: make necessary modifications to get working on `salt-ssh`
* https://freenode.logbot.info/saltstack-formulas/20200506#c3811885-c3812572
* Avoid `defaults.merge`
* Send template values by `context`, to avoid:

```python
      ID: logrotate-config
Function: file.managed
    Name: /etc/logrotate.conf
  Result: False
 Comment: An exception occurred in this state: Traceback (most recent call last):
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 394, in render_jinja_tmpl
              output = template.render(**decoded_context)
            File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 1008, in render
              return self.environment.handle_exception(exc_info, True)
            File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 780, in handle_exception
              reraise(exc_type, exc_value, tb)
            File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/_compat.py", line 37, in reraise
              raise value.with_traceback(tb)
            File "<template>", line 1, in top-level template code
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/jinja.py", line 193, in get_source
              raise TemplateNotFound(template)
          jinja2.exceptions.TemplateNotFound: logrotate/map.jinja

          During handling of the above exception, another exception occurred:

          Traceback (most recent call last):
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/state.py", line 1981, in call
              **cdata['kwargs'])
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/loader.py", line 1977, in wrapper
              return f(*args, **kwargs)
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/states/file.py", line 3037, in managed
              **kwargs
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/modules/file.py", line 4846, in check_managed_changes
              **kwargs)
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/modules/file.py", line 4287, in get_managed
              **kwargs)
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 169, in render_tmpl
              output = render_str(tmplstr, context, tmplpath)
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 443, in render_jinja_tmpl
              trace=tracestr)
          salt.exceptions.SaltRenderError: Jinja error: logrotate/map.jinja
          Traceback (most recent call last):
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/templates.py", line 394, in render_jinja_tmpl
              output = template.render(**decoded_context)
            File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 1008, in render
              return self.environment.handle_exception(exc_info, True)
            File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/environment.py", line 780, in handle_exception
              reraise(exc_type, exc_value, tb)
            File "/var/tmp/.root_08c4d3_salt/pyall/jinja2/_compat.py", line 37, in reraise
              raise value.with_traceback(tb)
            File "<template>", line 1, in top-level template code
            File "/var/tmp/.root_08c4d3_salt/pyall/salt/utils/jinja.py", line 193, in get_source
              raise TemplateNotFound(template)
          jinja2.exceptions.TemplateNotFound: logrotate/map.jinja

          ; line 1

          ---
          {%- from "logrotate/map.jinja" import logrotate with context -%}    <======================
          {%- set config = salt['pillar.get']('logrotate:default_config', logrotate.default_config) -%}

          {%- set processed_parameters = [] -%}

          {%- macro set_parameter(parameter, default=None) -%}
          [...]
```
2020-05-06 15:42:57 +01:00
.github/workflows ci(workflows/commitlint): add to repo [skip ci] 2020-05-04 09:29:34 +01:00
bin ci: merge travis matrix, add `salt-lint` & `rubocop` to `lint` job 2019-10-09 03:07:04 +01:00
docs chore(release): 0.11.3 [skip ci] 2020-03-22 18:05:42 +00:00
logrotate fix: make necessary modifications to get working on `salt-ssh` 2020-05-06 15:42:57 +01:00
test fix(rubocop): fix remaining errors manually 2019-10-11 22:51:03 +01:00
.gitignore ci(gemfile.lock): add to repo with updated `Gemfile` [skip ci] 2020-04-21 22:07:56 +01:00
.rubocop.yml chore(rubocop): use org-wide standard settings for `Metrics/BlockLength` [skip ci] 2020-04-18 13:43:57 +01:00
.salt-lint ci(travis): update `salt-lint` config for `v0.0.10` [skip ci] 2019-10-23 17:33:37 +01:00
.travis.yml ci(kitchen+travis): remove `master-py2-arch-base-latest` [skip ci] 2020-05-02 04:28:07 +01:00
.yamllint ci: merge travis matrix, add `salt-lint` & `rubocop` to `lint` job 2019-10-09 03:07:04 +01:00
AUTHORS.md chore(release): 0.11.3 [skip ci] 2020-03-22 18:05:42 +00:00
CHANGELOG.md chore(release): 0.11.3 [skip ci] 2020-03-22 18:05:42 +00:00
CODEOWNERS chore(codeowners): update `semantic-release` related files [skip ci] 2020-05-04 23:15:47 +01:00
FORMULA chore(release): 0.11.3 [skip ci] 2020-03-22 18:05:42 +00:00
Gemfile ci(gemfile.lock): add to repo with updated `Gemfile` [skip ci] 2020-04-21 22:07:56 +01:00
Gemfile.lock ci(gemfile.lock): add to repo with updated `Gemfile` [skip ci] 2020-04-21 22:07:56 +01:00
LICENSE Remove extra new line characters 2015-05-07 13:42:07 -04:00
commitlint.config.js feat: implement semantic release 2019-06-25 13:36:14 +02:00
kitchen.yml ci(kitchen+travis): remove `master-py2-arch-base-latest` [skip ci] 2020-05-02 04:28:07 +01:00
pillar.example feat(yamllint): include for this repo and apply rules throughout 2019-08-08 10:59:16 +01:00
pre-commit_semantic-release.sh ci(travis): run `shellcheck` during lint job [skip ci] 2019-11-27 20:53:12 +00:00
release-rules.js feat: implement semantic release 2019-06-25 13:36:14 +02:00
release.config.js fix(release.config.js): use full commit hash in commit link [skip ci] 2019-10-31 10:29:04 +00:00

docs/README.rst

.. _readme:

logrotate-formula
=================

|img_travis| |img_sr|

.. |img_travis| image:: https://travis-ci.com/saltstack-formulas/logrotate-formula.svg?branch=master
   :alt: Travis CI Build Status
   :scale: 100%
   :target: https://travis-ci.com/saltstack-formulas/logrotate-formula
.. |img_sr| image:: https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg
   :alt: Semantic Release
   :scale: 100%
   :target: https://github.com/semantic-release/semantic-release

Install and configure logrotate on a machine.

The config files are per OS.
At the moment only Debian, RedHat, Scientific Linux and Archlinux supported with this formula

.. contents:: **Table of Contents**

General notes
-------------

See the full `SaltStack Formulas installation and usage instructions
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.

If you are interested in writing or contributing to formulas, please pay attention to the `Writing Formula Section
<https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#writing-formulas>`_.

If you want to use this formula, please pay attention to the ``FORMULA`` file and/or ``git tag``,
which contains the currently released version. This formula is versioned according to `Semantic Versioning <http://semver.org/>`_.

See `Formula Versioning Section <https://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html#versioning>`_ for more details.

Contributing to this repo
-------------------------

**Commit message formatting is significant!!**

Please see `How to contribute <https://github.com/saltstack-formulas/.github/blob/master/CONTRIBUTING.rst>`_ for more details.

Available states
----------------

.. contents::
   :local:

``logrotate``
^^^^^^^^^^^^^

Installs the ``logrotate`` package and service/timer/cron.

``logrotate.config``
^^^^^^^^^^^^^^^^^^^^

Manages logrotate config and include dir.

``logrotate.install``
^^^^^^^^^^^^^^^^^^^^^

Installs the logrotate package and its dependencies.

``logrotate.jobs``
^^^^^^^^^^^^^^^^^^

Create custom job for logrotate.

``logrotate.service``
^^^^^^^^^^^^^^^^^^^^^

Manages the startup and running state of the logrotate service.

Testing
-------

Linux testing is done with ``kitchen-salt``.

Requirements
^^^^^^^^^^^^

* Ruby
* Docker

.. code-block:: bash

   $ gem install bundler
   $ bundle install
   $ bin/kitchen test [platform]

Where ``[platform]`` is the platform name defined in ``kitchen.yml``,
e.g. ``debian-9-2019-2-py3``.

``bin/kitchen converge``
^^^^^^^^^^^^^^^^^^^^^^^^

Creates the docker instance and runs the ``logrotate`` main state, ready for testing.

``bin/kitchen verify``
^^^^^^^^^^^^^^^^^^^^^^

Runs the ``inspec`` tests on the actual instance.

``bin/kitchen destroy``
^^^^^^^^^^^^^^^^^^^^^^^

Removes the docker instance.

``bin/kitchen test``
^^^^^^^^^^^^^^^^^^^^

Runs all of the stages above in one go: i.e. ``destroy`` + ``converge`` + ``verify`` + ``destroy``.

``bin/kitchen login``
^^^^^^^^^^^^^^^^^^^^^

Gives you SSH access to the instance for manual testing.