diff --git a/ansible-playbook.sh b/ansible-playbook.sh
index caf6e2afd75182893c4bca5d6ce91ca0a223c41e..6277917ed2a9cd4caeda9fde2d370b58a0580bb3 100755
--- a/ansible-playbook.sh
+++ b/ansible-playbook.sh
@@ -8,15 +8,17 @@ cd $( cd $(dirname $(realpath $0)) ; pwd )
 
 if [ $1 == "local" ]
   then
+    CUSTOM_DIR=false
     INVENTORY=./local.inventory
     shift
   else
     if [ -f ./inventory/inventory ]
       then
-        INVENTORY=./inventory/inventory
+        CUSTOM_DIR=./inventory
       else
-        INVENTORY=./inventory/$ANSIBLE_COMPANY/inventory
-  fi
+        CUSTOM_DIR=./inventory/$ANSIBLE_COMPANY
+    fi
+    INVENTORY=$CUSTOM_DIR/inventory
 fi
 
 if [ "$1" == "" ]
@@ -29,16 +31,11 @@ fi
 if [ $1 == "custom" ]
   then
     shift
-    if [ $INVENTORY == "./inventory/inventory" ]
-      then
-        PLAYBOOK_PREFIX="./inventory"
-      else
-        PLAYBOOK_PREFIX="./inventory/$ANSIBLE_COMPANY"
-    fi
+    PLAYBOOK_PREFIX=$CUSTOM_DIR/
   else
-    PLAYBOOK_PREFIX="."
+    PLAYBOOK_PREFIX=""
 fi
-PLAYBOOK=$PLAYBOOK_PREFIX/$1.yml
+PLAYBOOK=$PLAYBOOK_PREFIX$1.yml
 shift
 
 if [ ! -f $INVENTORY ]
@@ -55,7 +52,17 @@ fi
 
 if [ -f $SECRETS ]
   then
-    ansible-playbook $PLAYBOOK -i $INVENTORY -e @$SECRETS "$@"
-else
-  ansible-playbook $PLAYBOOK -i $INVENTORY --ask-sudo-pass "$@"
+    echo ansible-playbook $PLAYBOOK -i $INVENTORY -e @$SECRETS "$@"
+  else
+    echo ansible-playbook $PLAYBOOK -i $INVENTORY --ask-sudo-pass "$@"
+fi
+
+if [ $CUSTOM_DIR != "false" ] && [ "$CUSTOM_DIR" != "$PLAYBOOK_PREFIX" ] && [ -f $CUSTOM_DIR/$PLAYBOOK ]
+  then
+    if [ -f $SECRETS ]
+      then
+        echo ansible-playbook $CUSTOM_DIR/$PLAYBOOK -i $INVENTORY -e @$SECRETS "$@"
+      else
+        echo ansible-playbook $CUSTOM_DIR/$PLAYBOOK -i $INVENTORY --ask-sudo-pass "$@"
+    fi
 fi
diff --git a/farm.yml b/farm.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f5992eec32afb91411015d3006d6c99436495dd1
--- /dev/null
+++ b/farm.yml
@@ -0,0 +1,74 @@
+##
+# Ansible playbook for setting up all hosts at once
+#
+
+---
+# file: farm.yml
+
+- include: "validate.yml"
+
+- name: "Oracle servers"
+  hosts: "dbserver-oracle"
+  sudo: yes
+  roles:
+    - oracle
+
+- name: "MySqL servers"
+  hosts: "dbserver-mysql"
+  sudo: yes
+  roles:
+    - mysql
+
+- name: "Drupal servers"
+  hosts: "webserver-drupal"
+  sudo: yes
+  roles:
+    - drupal
+
+- name: "ownCloud servers"
+  hosts: "owncloudserver"
+  sudo: yes
+  roles:
+    - owncloud
+
+- name: "Piwik servers"
+  hosts: "piwikserver"
+  sudo: yes
+  roles:
+    - piwik
+
+- name: "Proxy servers"
+  hosts: "proxyserver"
+  sudo: yes
+  roles:
+    - haproxy
+
+- name: "Compass instances"
+  hosts: "compassinstance"
+  sudo: yes
+  roles:
+    - compass
+
+- name: "nodeJS servers"
+  hosts: "nodejsserver"
+  sudo: yes
+  roles:
+    - nodejs
+
+- name: "SVN servers"
+  hosts: "svnserver"
+  sudo: yes
+  roles:
+    - svnserver
+
+- name: "APT proxies"
+  hosts: "apt-proxy"
+  sudo: yes
+  roles:
+    - aptproxy
+
+- name: "OpenPhoto servers"
+  hosts: "openphotoserver"
+  sudo: yes
+  roles:
+    - openphoto