diff --git a/kitchen-init.sh b/kitchen-init.sh
new file mode 100755
index 0000000..8af12b6
--- /dev/null
+++ b/kitchen-init.sh
@@ -0,0 +1,242 @@
+#!/bin/bash
+
+# usage:
+# cd <formula repo>; ./kitchen_init.sh
+
+
+# CONFIG
+
+export DRIVER=${DRIVER:-vagrant}      # vagrant, dokken, openstack, ...
+export VERIFIER=${VERIFIER:-inspec}  # serverspec, pester
+export KITCHEN_YML=${KITCHEN_YML:-.kitchen.yml}
+
+export FORMULA=${FORMULA:-$(awk -F: '/name/{gsub(/[\ \"]/,"");print $2}' metadata.yml)}
+export SUITES=$(ls tests/pillar|xargs -I{} basename {} .sls)
+
+
+# INIT
+
+test ! -e .kitchen.yml || {
+  kitchen init -D kitchen-docker -P kitchen-salt --no-create-gemfile
+  echo .kitchen >> .gitignore
+  rm -rf test
+  rm -f .kitchen.yml
+  rm -f chefignore
+}
+
+test -e INTEGRATION.rst || \
+wget 'https://git.tcpcloud.eu/cookiecutter-templates/cookiecutter-salt-formula/raw/master/%7B%7Bcookiecutter.project_name%7D%7D/INTEGRATION.rst' -O INTEGRATION.rst 2>/dev/null
+
+# CONFIGURE & SCAFFOLD TEST STRUCTURE
+
+test -d tests/integration || {
+  for suite in $SUITES; do
+    mkdir -p tests/integration/$suite/$VERIFIER
+  done
+  mkdir -p tests/integration/helpers/$VERIFIER/
+  touch $_/spec_helper.rb
+}
+
+
+# .KITCHEN.YML
+
+cat > .kitchen.yml.jinja <<-EOF
+	---
+	driver:
+	  name: $DRIVER
+	{%- if DRIVER == 'docker' %}
+	  hostname: $FORMULA.ci.local
+	  use_sudo: false
+	{%- elif DRIVER == 'vagrant' %}
+	  vm_hostname: $FORMULA.ci.local
+	  use_sudo: false
+	  customize:
+	    memory: 512
+	{%- endif %}
+	
+	
+	provisioner:
+	  name: salt_solo
+	  salt_install: bootstrap
+	  salt_bootstrap_url: https://bootstrap.saltstack.com
+	  salt_version: latest
+	  formula: $FORMULA
+	  log_level: info
+	  state_top:
+	    base:
+	      "*":
+	        - $FORMULA
+	  pillars:
+	    top.sls:
+	      base:
+	        "*":
+	          - $FORMULA
+	  grains:
+	    noservices: {{ 'True' if DRIVER=='docker' else 'False' }}
+	
+	
+	verifier:
+	  name: $VERIFIER
+	  sudo: true
+	
+	
+	platforms:
+	  - name: ubuntu-14.04
+	  - name: ubuntu-16.04
+	  - name: centos-7.1
+	
+	
+	suites:
+	  {%- if DRIVER == 'vagrant' %}
+	  # Default suite, smoke test, setup prerequisites and executes run ./tests/run_tests.sh
+	  - name: default
+	    includes:
+	      - ubuntu-16.04
+	    driver:
+	      name: local
+	      provision_command:
+	        - apt-get install -y git build-essential python-pip python-yaml python-dev python-virtualenv
+	    provisioner:
+	      name: shell
+	      script: tests/bootstrap.sh
+	
+	  {%- endif %}
+	  {%- for suite in SUITES.split() %}
+	
+	  - name: {{ suite }}
+	    provisioner:
+	      pillars-from-files:
+	        $FORMULA.sls: tests/pillar/{{suite}}.sls
+	  {%- endfor %}
+	
+	# vim: ft=yaml sw=2 ts=2 sts=2 tw=125
+EOF
+
+#FIXME, remove comment \{\% for name, value in environment('SUITE_') \%\}
+
+which envtpl &> /dev/null|| pip3 install envtpl
+envtpl < .kitchen.yml.jinja > .kitchen.yml
+
+[[ "$DRIVER" != "docker" ]] && {
+  test -e .kitchen.docker.yml || \
+  DRIVER=docker envtpl < <(head -n12 .kitchen.yml.jinja) > .kitchen.docker.yml
+}
+
+
+test -e .kitchen.openstack.yml || \
+cat > .kitchen.openstack.yml <<-\EOF
+	# usage: `KITCHEN_LOCAL_YAML=.kitchen.openstack.yml kitchen test`
+
+	# https://docs.chef.io/config_yml_kitchen.html
+	# https://github.com/test-kitchen/kitchen-openstack
+
+	---
+	driver:
+	  name: openstack
+	  openstack_auth_url: <%= ENV['OS_AUTH_URL'] %>/tokens
+	  openstack_username: <%= ENV['OS_USERNAME'] || 'ci' %>
+	  openstack_api_key:  <%= ENV['OS_PASSWORD'] || 'ci' %>
+	  openstack_tenant:   <%= ENV['OS_TENANT_NAME'] || 'ci_jenkins' %>
+
+	  #floating_ip_pool: <%= ENV['OS_FLOATING_IP_POOL'] || 'nova' %>
+	  key_name: <%= ENV['BOOTSTRAP_SSH_KEY_NAME'] || 'bootstrap_insecure' %>
+	  private_key_path: <%= ENV['BOOTSTRAP_SSH_KEY_PATH'] || "#{ENV['HOME']}/.ssh/id_rsa_bootstrap_insecure" %>
+
+
+	platforms:
+	  - name: ubuntu-14.04
+	    driver:
+	      username: <%= ENV['OS_UBUNTU_IMAGE_USER'] || 'root' %>
+	      image_ref: <%= ENV['OS_UBUNTU_IMAGE_REF'] || 'ubuntu-14-04-x64-1455869035' %>
+	      flavor_ref: m1.medium
+	      network_ref:
+	        <% if ENV['OS_NETWORK_REF'] -%>
+	        - <% ENV['OS_NETWORK_REF'] %>
+	        <% else -%>
+	        - ci-net
+	        <% end -%>
+	    # force update apt cache on the image
+	    run_list:
+	      - recipe[apt]
+	    attributes:
+	      apt:
+	          compile_time_update: true
+	transport:
+	  username: <%= ENV['OS_UBUNTU_IMAGE_USER'] || 'root' %>
+
+	# vim: ft=yaml sw=2 ts=2 sts=2 tw=125
+EOF
+
+
+# CLEANUP
+rm -f .kitchen.yml.jinja
+
+
+# ADD CHANGES TO GIT
+
+git add \
+  .gitignore \
+  .kitchen*yml \
+  INTEGRATION.rst
+
+
+
+# UPDATE README
+
+# skip if already updated
+grep -Eoq 'Development and testing' README.* && exit 0
+
+KITCHEN_LIST=$(kitchen list|tail -n+2)
+cat >> README.* <<-\EOF
+
+	Development and testing
+	=======================
+	
+	Development and test workflow with `Test Kitchen <http://kitchen.ci>`_ and
+	`kitchen-salt <https://github.com/simonmcc/kitchen-salt>`_ provisioner plugin.
+	
+	Test Kitchen is a test harness tool to execute your configured code on one or more platforms in isolation.
+	There is a ``.kitchen.yml`` in main directory that defines *platforms* to be tested and *suites* to execute on them.
+	
+	Kitchen CI can spin instances locally or remote, based on used *driver*.
+	For local development ``.kitchen.yml`` defines a `vagrant <https://github.com/test-kitchen/kitchen-vagrant>`_ or
+	`docker  <https://github.com/test-kitchen/kitchen-docker>`_ driver.
+	
+	To use backend drivers or implement your CI follow the section `INTEGRATION.rst#Continuous Integration`__.
+	
+	A listing of scenarios to be executed:
+	
+	.. code-block:: shell
+	
+	  $ kitchen list
+	
+	  Instance                    Driver   Provisioner  Verifier  Transport  Last Action
+	
+EOF
+
+echo "$KITCHEN_LIST" | sed 's/^/  /' >> README.*
+
+cat >> README.* <<-\EOF
+	
+	The `Busser <https://github.com/test-kitchen/busser>`_ *Verifier* is used to setup and run tests
+	implementated in `<repo>/test/integration`. It installs the particular driver to tested instance
+	(`Serverspec <https://github.com/neillturner/kitchen-verifier-serverspec>`_,
+	`InSpec <https://github.com/chef/kitchen-inspec>`_, Shell, Bats, ...) prior the verification is executed.
+	
+	
+	Usage:
+	
+	.. code-block:: shell
+	
+	  # manually
+	  kitchen [test || [create|converge|verify|exec|login|destroy|...]] -t tests/integration
+	
+	  # or with provided Makefile within CI pipeline
+	  make kitchen
+	
+EOF
+
+git add README.*
+git status
+
+echo "Note: Dont forget to add kitchen targets to 'Makefile'.
