Initial commit

This commit is contained in:
David Seira 2017-07-28 01:43:45 +02:00
commit c6c2a1dfd8
7 changed files with 157 additions and 0 deletions

42
README.rst Normal file
View File

@ -0,0 +1,42 @@
==============
cron-formula
==============
Install and configure cron and set up cron tasks.
.. note::
See the full `Salt Formulas installation and usage instructions
<http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
Available states
================
.. contents::
:local:
|OS|Compatibility|
|:----:|:--------------:|
|Ubuntu 12|Yes|
|Ubuntu 14|Yes|
|Ubuntu 16|Yes|
|CentOS 6|Yes|
|CentOS 7|Yes|
``cron``
--------
Join install, configure and service states.
``install``
-----------
Install required package to run cron.
``config``
----------
Configure cron tasks based on the pillar configuration.
Remember that is you need to delete a cron task you have to set ``type`` as ``absent`` if not, the crontask will not be deleted. You can also disable a crontask using the ``commented`` keyword.
``service``
-----------
Manage the ``cron`` service. Stopping or starting it. If needed, you can disable the cron service by setting the ``enabled: False`` option in the pillar.

38
cron/config.sls Normal file
View File

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "cron/map.jinja" import cron_settings with context %}
{% if 'tasks' in cron_settings %}
{% for task,task_options in cron_settings.tasks.iteritems() %}
cron.{{ task }}:
cron.{{ task_options.type|default('present') }}:
- name: '{{ task_options.name }}'
{% if 'user' in task_options %}
- user: {{ task_options.user|default('root') }}
{% endif %}
{% if 'minute' in task_options %}
- minute: {{ task_options.minute }}
{% endif %}
{% if 'hour' in task_options %}
- hour: {{ task_options.hour }}
{% endif %}
{% if 'daymonth' in task_options %}
- daymonth: {{ task_options.daymonth }}
{% endif %}
{% if 'dayweek' in task_options %}
- dayweek: {{ task_options.dayweek }}
{% endif %}
{% if 'commented' in task_options and task_options.commented %}
- commented: True
{% endif %}
{% if 'special' in task_options %}
- special: '{{ task_options.special }}'
{% endif %}
- identifier: '{{ task }}'
{% if 'comment' in task_options %}
- comment: '{{ task_options.comment }}'
{% endif %}
{% endfor %}
{% endif %}

7
cron/init.sls Normal file
View File

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
include:
- cron.install
- cron.config
- cron.service

8
cron/install.sls Normal file
View File

@ -0,0 +1,8 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "cron/map.jinja" import cron_settings with context %}
cron.install:
pkg.installed:
- name: {{ cron_settings.pkg }}

20
cron/map.jinja Normal file
View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# vim: ft=jinja
{% set os_family_map = salt['grains.filter_by']({
'RedHat': {
'pkg': 'cronie',
'service': 'crond',
},
'Debian': {
'pkg': 'cron',
'service': 'cron',
},
}, grain='os_family', merge=salt['pillar.get']('cron:lookup')) %}
{% set cron_settings = salt['pillar.get'](
'cron',
default=os_family_map,
merge=True
)
%}

15
cron/service.sls Normal file
View File

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
# vim: ft=sls
{% from "cron/map.jinja" import cron_settings with context %}
cron.service:
{% if 'enabled' not in cron_settings or ( 'enabled' in cron_settings and cron_settings.enabled ) %}
service.running:
- name: {{ cron_settings.service }}
- enable: True
{% else %}
service.dead:
- name: {{ cron_settings.service }}
- enable: False
{% endif %}

27
pillar.example Normal file
View File

@ -0,0 +1,27 @@
cron:
enabled: True # Default
lookup: # Not needed, just if you want to use another cron program
pkg: 'cronie'
tasks:
task1:
type: 'present' # Default
name: 'echo test > /tmp/test'
user: 'root'
minute: 0
hour: 0
daymonth: 7
month: 1
dayweek: 6
comment: 'comment1'
task2:
type: 'absent' # To remove that crontask
name: 'echo task2 > /tmp/test2'
user: 'root'
minute: 'random'
hour: 1
task3:
type: 'absent'
name: 'echo task3 > /tmp/test3'
user: 'root'
special: '@hourly'
comment: 'comment3'