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