diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6f76275
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+tests/build/
+*.swp
+*.pyc
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..5c94180
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,14 @@
+  Copyright (c) 2014-2015 tcp cloud a. s.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..fc83783
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,26 @@
+DESTDIR=/
+SALTENVDIR=/usr/share/salt-formulas/env
+RECLASSDIR=/usr/share/salt-formulas/reclass
+FORMULANAME=$(shell grep name: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\-]*')
+
+all:
+	@echo "make install - Install into DESTDIR"
+	@echo "make test    - Run tests"
+	@echo "make clean   - Cleanup after tests run"
+
+install:
+	# Formula
+	[ -d $(DESTDIR)/$(SALTENVDIR) ] || mkdir -p $(DESTDIR)/$(SALTENVDIR)
+	cp -a $(FORMULANAME) $(DESTDIR)/$(SALTENVDIR)/
+	[ ! -d _modules ] || cp -a _modules $(DESTDIR)/$(SALTENVDIR)/
+	[ ! -d _states ] || cp -a _states $(DESTDIR)/$(SALTENVDIR)/ || true
+	# Metadata
+	[ -d $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME) ] || mkdir -p $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
+	cp -a metadata/service/* $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
+
+test:
+	[ ! -d tests ] || (cd tests; ./run_tests.sh)
+
+clean:
+	[ ! -d tests/build ] || rm -rf tests/build
+	[ ! -d build ] || rm -rf build
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..1d4c0c8
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,21 @@
+======================
+Salt Logrotate Formula
+======================
+
+Logrotate is designed to ease administration of systems that generate
+large numbers of log files. It allows automatic rotation, compression,
+removal, and mailing of log files. Each log file may be handled daily,
+weekly, monthly, or when it grows too large.
+
+Example pillar
+==============
+
+Configuration for syslog from Ubuntu 14.04 (trusty):
+
+.. literalinclude:: tests/pillar/service.sls
+   :language: yaml
+
+Reference
+=========
+
+- http://www.linuxcommand.org/man_pages/logrotate8.html
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..46eb885
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,5 @@
+salt-formula-logrotate (0.1) trusty; urgency=medium
+
+  * Initial release
+
+ -- Filip Pytloun <filip.pytloun@tcpcloud.eu>  Thu, 13 Aug 2015 23:23:41 +0200
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+9
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..1aa63e3
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,15 @@
+Source: salt-formula-logrotate
+Maintainer: Filip Pytloun <filip.pytloun@tcpcloud.eu>
+Section: admin
+Priority: optional
+Build-Depends: salt-master, python, python-yaml, debhelper (>= 9)
+Standards-Version: 3.9.6
+Homepage: http://www.tcpcloud.eu
+Vcs-Browser: https://github.com/tcpcloud/salt-formula-logrotate
+Vcs-Git: https://github.com/tcpcloud/salt-formula-logrotate.git
+
+Package: salt-formula-logrotate
+Architecture: all
+Depends: ${misc:Depends}, salt-master, reclass
+Description: logrotate Salt formula
+ Install and configure logrotate server and relay.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..3a21f1c
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,15 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: salt-formula-logrotate
+Upstream-Contact: Filip Pytloun <filip.pytloun@tcpcloud.eu>
+Source: https://github.com/tcpcloud/salt-formula-logrotate
+
+Files: *
+Copyright: 2014-2015 tcp cloud
+License: Apache-2.0
+  Copyright (C) 2014-2015 tcp cloud
+  .
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  .
+  On a Debian system you can find a copy of this license in
+  /usr/share/common-licenses/Apache-2.0.
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..d585829
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1,3 @@
+README.rst
+CHANGELOG.rst
+VERSION
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..abde6ef
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,5 @@
+#!/usr/bin/make -f
+
+%:
+	dh $@
+
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/logrotate/files/job.conf b/logrotate/files/job.conf
new file mode 100644
index 0000000..bd72c63
--- /dev/null
+++ b/logrotate/files/job.conf
@@ -0,0 +1,27 @@
+{%- from "logrotate/map.jinja" import server with context -%}
+{%- for job in jobs -%}
+
+{% for file in job.files %}
+{{ file }}
+{%- endfor %}
+{
+    {%- for option in job.options %}
+    {%- if option is mapping %}
+    {%- set key = option.keys()[0] -%}
+    {%- set value = option.get(option.keys()[0]) -%}
+    {%- if key in ['postrotate', 'prerotate', 'firstaction', 'lastaction'] %}
+    {{ key }}
+        {{ value }}
+    endscript
+    {%- else %}
+    {{ key }} {{ value }}
+    {%- endif %}
+    {%- else %}
+    {{ option }}
+    {%- endif %}
+    {%- endfor %}
+}
+{% endfor %}
+{#-
+vim: syntax=jinja
+-#}
diff --git a/logrotate/init.sls b/logrotate/init.sls
new file mode 100644
index 0000000..90bb2e6
--- /dev/null
+++ b/logrotate/init.sls
@@ -0,0 +1,4 @@
+include:
+{%- if pillar.logrotate.server is defined %}
+- logrotate.server
+{%- endif %}
diff --git a/logrotate/map.jinja b/logrotate/map.jinja
new file mode 100644
index 0000000..473917e
--- /dev/null
+++ b/logrotate/map.jinja
@@ -0,0 +1,10 @@
+{%- load_yaml as server_defaults %}
+default:
+  pkgs:
+  - logrotate
+  config_dir: /etc/logrotate.d
+  config: /etc/logrotate.conf
+{%- endload %}
+
+{%- set server = salt['grains.filter_by'](server_defaults, merge=salt['pillar.get']('logrotate:server')) %}
+
diff --git a/logrotate/server.sls b/logrotate/server.sls
new file mode 100644
index 0000000..6d66dfc
--- /dev/null
+++ b/logrotate/server.sls
@@ -0,0 +1,23 @@
+{%- from "logrotate/map.jinja" import server with context %}
+
+{%- if server.enabled %}
+
+logrotate_packages:
+  pkg.installed:
+    - names: {{ server.pkgs }}
+
+{%- for name, job in server.job.iteritems() %}
+
+logrotate_job_{{ name }}:
+  file.managed:
+    - name: {{ server.config_dir }}/{{ name }}
+    - source: salt://logrotate/files/job.conf
+    - template: jinja
+    - require:
+      - pkg: logrotate_packages
+    - context:
+        jobs: {{ job }}
+
+{%- endfor %}
+
+{%- endif %}
diff --git a/metadata.yml b/metadata.yml
new file mode 100644
index 0000000..249c1db
--- /dev/null
+++ b/metadata.yml
@@ -0,0 +1,3 @@
+name: "logrotate"
+version: "0.1"
+source: "https://github.com/tcpcloud/salt-formula-logrotate"
diff --git a/metadata/service/server.yml b/metadata/service/server.yml
new file mode 100644
index 0000000..4781902
--- /dev/null
+++ b/metadata/service/server.yml
@@ -0,0 +1,6 @@
+applications:
+  - logrotate
+parameters:
+  logrotate:
+    server:
+      enabled: true
diff --git a/tests/pillar/server.sls b/tests/pillar/server.sls
new file mode 100644
index 0000000..2920c17
--- /dev/null
+++ b/tests/pillar/server.sls
@@ -0,0 +1,37 @@
+logrotate:
+  server:
+    enabled: true
+    job:
+      rsyslog:
+        - files:
+            - /var/log/mail.info
+            - /var/log/mail.warn
+            - /var/log/mail.err
+            - /var/log/mail.log
+            - /var/log/daemon.log
+            - /var/log/kern.log
+            - /var/log/auth.log
+            - /var/log/user.log
+            - /var/log/lpr.log
+            - /var/log/cron.log
+            - /var/log/debug
+            - /var/log/messages
+          options:
+            - rotate: 4
+            - weekly
+            - missingok
+            - notifempty
+            - compress
+            - delaycompress
+            - sharedscripts
+            - postrotate: "reload rsyslog >/dev/null 2>&1 || true"
+        - files:
+            - /var/log/syslog
+          options:
+            - rotate: 7
+            - daily
+            - missingok
+            - notifempty
+            - delaycompress
+            - compress
+            - postrotate: "reload rsyslog >/dev/null 2>&1 || true"
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100755
index 0000000..ab84ffb
--- /dev/null
+++ b/tests/run_tests.sh
@@ -0,0 +1,172 @@
+#!/usr/bin/env bash
+
+set -e
+[ -n "$DEBUG" ] && set -x
+
+CURDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+METADATA=${CURDIR}/../metadata.yml
+FORMULA_NAME=$(cat $METADATA | python -c "import sys,yaml; print yaml.load(sys.stdin)['name']")
+
+## Overrideable parameters
+PILLARDIR=${PILLARDIR:-${CURDIR}/pillar}
+BUILDDIR=${BUILDDIR:-${CURDIR}/build}
+VENV_DIR=${VENV_DIR:-${BUILDDIR}/virtualenv}
+DEPSDIR=${BUILDDIR}/deps
+
+SALT_FILE_DIR=${SALT_FILE_DIR:-${BUILDDIR}/file_root}
+SALT_PILLAR_DIR=${SALT_PILLAR_DIR:-${BUILDDIR}/pillar_root}
+SALT_CONFIG_DIR=${SALT_CONFIG_DIR:-${BUILDDIR}/salt}
+SALT_CACHE_DIR=${SALT_CACHE_DIR:-${SALT_CONFIG_DIR}/cache}
+
+SALT_OPTS="${SALT_OPTS} --retcode-passthrough --local -c ${SALT_CONFIG_DIR}"
+
+if [ "x${SALT_VERSION}" != "x" ]; then
+    PIP_SALT_VERSION="==${SALT_VERSION}"
+fi
+
+## Functions
+log_info() {
+    echo "[INFO] $*"
+}
+
+log_err() {
+    echo "[ERROR] $*" >&2
+}
+
+setup_virtualenv() {
+    log_info "Setting up Python virtualenv"
+    virtualenv $VENV_DIR
+    source ${VENV_DIR}/bin/activate
+    pip install salt${PIP_SALT_VERSION}
+}
+
+setup_pillar() {
+    [ ! -d ${SALT_PILLAR_DIR} ] && mkdir -p ${SALT_PILLAR_DIR}
+    echo "base:" > ${SALT_PILLAR_DIR}/top.sls
+    for pillar in ${PILLARDIR}/*; do
+        state_name=$(basename ${pillar%.sls})
+        echo -e "  ${state_name}:\n    - ${state_name}" >> ${SALT_PILLAR_DIR}/top.sls
+    done
+}
+
+setup_salt() {
+    [ ! -d ${SALT_FILE_DIR} ] && mkdir -p ${SALT_FILE_DIR}
+    [ ! -d ${SALT_CONFIG_DIR} ] && mkdir -p ${SALT_CONFIG_DIR}
+    [ ! -d ${SALT_CACHE_DIR} ] && mkdir -p ${SALT_CACHE_DIR}
+
+    echo "base:" > ${SALT_FILE_DIR}/top.sls
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        echo -e "  ${state_name}:\n    - ${FORMULA_NAME}" >> ${SALT_FILE_DIR}/top.sls
+    done
+
+    cat << EOF > ${SALT_CONFIG_DIR}/minion
+file_client: local
+cachedir: ${SALT_CACHE_DIR}
+verify_env: False
+
+file_roots:
+  base:
+  - ${SALT_FILE_DIR}
+  - ${CURDIR}/..
+  - /usr/share/salt-formulas/env
+
+pillar_roots:
+  base:
+  - ${SALT_PILLAR_DIR}
+  - ${PILLARDIR}
+EOF
+}
+
+fetch_dependency() {
+    dep_name="$(echo $1|cut -d : -f 1)"
+    dep_source="$(echo $1|cut -d : -f 2-)"
+    dep_root="${DEPSDIR}/$(basename $dep_source .git)"
+    dep_metadata="${dep_root}/metadata.yml"
+
+    [ -d /usr/share/salt-formulas/env/${dep_name} ] && log_info "Dependency $dep_name already present in system-wide salt env" && return 0
+    [ -d $dep_root ] && log_info "Dependency $dep_name already fetched" && return 0
+
+    log_info "Fetching dependency $dep_name"
+    [ ! -d ${DEPSDIR} ] && mkdir -p ${DEPSDIR}
+    git clone $dep_source ${DEPSDIR}/$(basename $dep_source .git)
+    ln -s ${dep_root}/${dep_name} ${SALT_FILE_DIR}/${dep_name}
+
+    METADATA="${dep_metadata}" install_dependencies
+}
+
+install_dependencies() {
+    grep -E "^dependencies:" ${METADATA} >/dev/null || return 0
+    (python - | while read dep; do fetch_dependency "$dep"; done) << EOF
+import sys,yaml
+for dep in yaml.load(open('${METADATA}', 'ro'))['dependencies']:
+    print '%s:%s' % (dep["name"], dep["source"])
+EOF
+}
+
+clean() {
+    log_info "Cleaning up ${BUILDDIR}"
+    [ -d ${BUILDDIR} ] && rm -rf ${BUILDDIR} || exit 0
+}
+
+salt_run() {
+    [ -e ${VEN_DIR}/bin/activate ] && source ${VENV_DIR}/bin/activate
+    salt-call ${SALT_OPTS} $*
+}
+
+prepare() {
+    [ -d ${BUILDDIR} ] && mkdir -p ${BUILDDIR}
+
+    which salt-call || setup_virtualenv
+    setup_pillar
+    setup_salt
+    install_dependencies
+}
+
+run() {
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        salt_run --id=${state_name} state.show_sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
+    done
+}
+
+real_run() {
+    for pillar in ${PILLARDIR}/*.sls; do
+        state_name=$(basename ${pillar%.sls})
+        salt_run --id=${state_name} state.sls ${FORMULA_NAME} || (log_err "Execution of ${FORMULA_NAME}.${state_name} failed"; exit 1)
+    done
+}
+
+_atexit() {
+    RETVAL=$?
+    trap true INT TERM EXIT
+
+    if [ $RETVAL -ne 0 ]; then
+        log_err "Execution failed"
+    else
+        log_info "Execution successful"
+    fi
+    return $RETVAL
+}
+
+## Main
+trap _atexit INT TERM EXIT
+
+case $1 in
+    clean)
+        clean
+        ;;
+    prepare)
+        prepare
+        ;;
+    run)
+        run
+        ;;
+    real-run)
+        real_run
+        ;;
+    *)
+        prepare
+        run
+        ;;
+esac
