Initial commit
This commit is contained in:
commit
c6c2a1dfd8
|
@ -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.
|
|
@ -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 %}
|
|
@ -0,0 +1,7 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=sls
|
||||||
|
|
||||||
|
include:
|
||||||
|
- cron.install
|
||||||
|
- cron.config
|
||||||
|
- cron.service
|
|
@ -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 }}
|
|
@ -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
|
||||||
|
)
|
||||||
|
%}
|
|
@ -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 %}
|
|
@ -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'
|
Loading…
Reference in New Issue