diff --git a/.kitchen.yml b/.kitchen.yml
new file mode 100644
index 0000000..5020ac0
--- /dev/null
+++ b/.kitchen.yml
@@ -0,0 +1,48 @@
+---
+driver:
+  name: docker
+  hostname: rundeck.ci.local
+  use_sudo: false
+
+provisioner:
+  name: salt_solo
+  salt_install: bootstrap
+  salt_bootstrap_url: https://bootstrap.saltstack.com
+  salt_version: latest
+  require_chef: false
+  log_level: error
+  formula: rundeck
+  grains:
+    noservices: true
+  state_top:
+    base:
+      "*":
+        - rundeck
+  pillars:
+    top.sls:
+      base:
+        "*":
+          - rundeck
+
+verifier:
+  name: inspec
+  sudo: true
+
+
+platforms:
+  - name: <%=ENV['PLATFORM'] || 'ubuntu-xenial'%>
+    driver_config:
+      image: <%=ENV['PLATFORM'] || 'trevorj/salty-whales:xenial'%>
+      platform: ubuntu
+
+suites:
+  - name: server
+    provisioner:
+      pillars-from-files:
+        rundeck.sls: tests/pillar/server.sls
+  - name: client
+    provisioner:
+      pillars-from-files:
+        rundeck.sls: tests/pillar/client.sls
+
+# vim: ft=yaml sw=2 ts=2 sts=2 tw=125
diff --git a/README.rst b/README.rst
index 83226fe..d473b3d 100644
--- a/README.rst
+++ b/README.rst
@@ -4,3 +4,143 @@
 
 Rundeck is open source software that helps you automate routine operational
 procedures in data center or cloud environments.
+
+Sample pillars
+==============
+
+Configure Server
+~~~~~~~~~~~~~~~~
+
+Rundeck is suppose to be configure for running in Docker Swarm and the server
+state prepares only configuration files, including binding parameters, system
+user, Rundeck users and API tokens:
+
+.. code-block:: yaml
+
+    rundeck:
+      server:
+        enabled: true
+        user:
+          uid: 550
+          gid: 550
+        api:
+          host: 10.20.0.2
+          port: 4440
+          https: false
+        ssh:
+          user: runbook
+          private_key: <private>
+          public_key: <public>
+
+        users:
+          admin:
+            name: admin
+            password: password
+            roles:
+              - user
+              - admin
+              - architect
+              - deploy
+              - build
+          john:
+            name: John
+            password: johnspassword
+            roles:
+              - user
+              - admin
+              - architect
+              - deploy
+              - build
+          kate:
+            name: Kate
+            password: katespassword
+            roles:
+              - user
+              - admin
+              - architect
+              - deploy
+              - build
+
+        tokens:
+          admin: EcK8zhQw
+
+
+To configure Rundeck to use PostgreSQL instead of H2:
+
+
+.. code-block:: yaml
+
+    rundeck:
+      server:
+        datasource:
+          engine: postgresql
+          host: 10.20.0.2
+          port: 5432
+          username: ${_param:rundeck_postgresql_username}
+          password: ${_param:rundeck_postgresql_password}
+          database: ${_param:rundeck_postgresql_database}
+
+
+Configure Client
+~~~~~~~~~~~~~~~~
+
+Configure Projects
+^^^^^^^^^^^^^^^^^^
+
+Projects can be configured with a set of nodes which are available to run jobs
+within them. Rundeck uses `rundeck:server:ssh` credentials to access nodes.
+Jobs can be configured from a separate GIT repository using the SCM Import
+plugin.
+
+
+.. code-block:: yaml
+
+    rundeck:
+      client:
+        enabled: true
+        project:
+          project0:
+            description: project
+            node:
+              node01:
+                nodename: node01
+                hostname: node01.cluster.local
+                username: runbook
+                tags: [ubuntu, docker]
+              node02:
+                nodename: node02
+                hostname: node02.cluster.local
+                username: runbook
+                tags: [centos, docker]
+            plugin:
+              import:
+                address: http://gerrit.cluster.local/jobs/rundeck-jobs.git
+                branch: master
+
+
+Documentation and Bugs
+======================
+
+To learn how to install and update salt-formulas, consult the documentation
+available online at:
+
+    http://salt-formulas.readthedocs.io/
+
+For feature requests, bug reports or blueprints affecting entire ecosystem,
+use Launchpad salt-formulas project:
+
+    https://launchpad.net/salt-formulas
+
+You can also join salt-formulas-users team and subscribe to mailing list:
+
+    https://launchpad.net/~salt-formulas-users
+
+Developers wishing to work on the salt-formulas projects should always base
+their work on master branch and submit change request against specific formula.
+
+    https://gerrit.mcp.mirantis.net/#/admin/projects/salt-formulas/rundeck
+
+Any questions or feedback is always welcome so feel free to join our IRC
+channel:
+
+    #salt-formulas @ irc.freenode.net
diff --git a/rundeck/client/init.sls b/rundeck/client/init.sls
index 63c8c04..866b983 100644
--- a/rundeck/client/init.sls
+++ b/rundeck/client/init.sls
@@ -6,3 +6,8 @@
   - rundeck.client.project
 {%- endif %}
 {%- endif %}
+
+{%- if grains.get('noservices', False) %}
+rundeck-client-nop:
+  test.nop: []
+{%- endif %}
diff --git a/rundeck/client/project.sls b/rundeck/client/project.sls
index a143d92..63b4467 100644
--- a/rundeck/client/project.sls
+++ b/rundeck/client/project.sls
@@ -9,6 +9,9 @@
   rundeck_project.present:
     - name: {{ project_name }}
     - description: {{ project.description|default('') }}
+    {%- if grains.get('noservices', False) %}
+    - onlyif: 'false'
+    {%- endif %}
 
 rundeck-{{ project_name }}-resources:
   file.managed:
@@ -22,6 +25,9 @@
         project_name: {{ project_name }}
     - require:
       - rundeck_project: rundeck-{{ project_name }}-project
+    {%- if grains.get('noservices', False) %}
+    - onlyif: 'false'
+    {%- endif %}
 
 {%- set plugin = project.plugin|default({}) %}
 
@@ -48,6 +54,9 @@
 {%- endif %}
     - require:
       - rundeck_project: rundeck-{{ project_name }}-project
+    {%- if grains.get('noservices', False) %}
+    - onlyif: 'false'
+    {%- endif %}
 
 rundeck-{{ project_name }}-scm-import-enable:
   rundeck_scm.enabled_import:
@@ -55,6 +64,9 @@
     - project_name: {{ project_name }}
     - require:
       - rundeck_scm: rundeck-{{ project_name }}-scm-import
+    {%- if grains.get('noservices', False) %}
+    - onlyif: 'false'
+    {%- endif %}
 
 rundeck-{{ project_name }}-scm-import-sync:
   rundeck_scm.sync_import:
@@ -67,6 +79,9 @@
       - rundeck_scm: rundeck-{{ project_name }}-scm-import
     - watch:
       - rundeck_scm: rundeck-{{ project_name }}-scm-import-enable
+    {%- if grains.get('noservices', False) %}
+    - onlyif: 'false'
+    {%- endif %}
 
 {%- endif %}
 
diff --git a/tests/pillar/client.sls b/tests/pillar/client.sls
new file mode 100644
index 0000000..31babdb
--- /dev/null
+++ b/tests/pillar/client.sls
@@ -0,0 +1,21 @@
+rundeck:
+  client:
+    enabled: true
+    project:
+      project0:
+        description: project
+        node:
+          node01:
+            nodename: node01
+            hostname: node01.cluster.local
+            username: runbook
+            tags: [ubuntu, docker]
+          node02:
+            nodename: node02
+            hostname: node02.cluster.local
+            username: runbook
+            tags: [centos, docker]
+        plugin:
+          import:
+            address: http://gerrit.cluster.local/jobs/rundeck-jobs.git
+            branch: master
diff --git a/tests/pillar/server.sls b/tests/pillar/server.sls
new file mode 100644
index 0000000..459a9cc
--- /dev/null
+++ b/tests/pillar/server.sls
@@ -0,0 +1,44 @@
+rundeck:
+  server:
+    enabled: true
+    user:
+      uid: 550
+      gid: 550
+    api:
+      host: 10.20.0.2
+      port: 4440
+      https: false
+    ssh:
+      user: runbook
+      private_key: private
+      public_key: public
+    users:
+      admin:
+        name: admin
+        password: password
+        roles:
+          - user
+          - admin
+          - architect
+          - deploy
+          - build
+      john:
+        name: John
+        password: johnspassword
+        roles:
+          - user
+          - admin
+          - architect
+          - deploy
+          - build
+      kate:
+        name: Kate
+        password: katespassword
+        roles:
+          - user
+          - admin
+          - architect
+          - deploy
+          - build
+    tokens:
+      admin: EcK8zhQw
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
new file mode 100755
index 0000000..312b7e4
--- /dev/null
+++ b/tests/run_tests.sh
@@ -0,0 +1,167 @@
+#!/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
+        grep ${FORMULA_NAME}: ${pillar} &>/dev/null || continue
+        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
+        grep ${FORMULA_NAME}: ${pillar} &>/dev/null || continue
+        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
+minion_id_caching: 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
+        grep ${FORMULA_NAME}: ${pillar} &>/dev/null || continue
+        state_name=$(basename ${pillar%.sls})
+        salt_run grains.set 'noservices' False force=True
+        salt_run --id=${state_name} state.show_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
+        ;;
+    *)
+        prepare
+        run
+        ;;
+esac
