diff --git a/roles/slurm/tasks/main.yml b/roles/slurm/tasks/main.yml
index 0d6513c6af6d957e2370d298be52c5c7d1af1648..a3a5ca1950ac30106ab54692280e2a7d7d37d82b 100644
--- a/roles/slurm/tasks/main.yml
+++ b/roles/slurm/tasks/main.yml
@@ -43,6 +43,13 @@
   template: src=slurm.conf.j2 dest=/etc/slurm/slurm.conf
   sudo: true
   notify: restart slurm
+  when: slurm_use_vpn==False
+
+- name: install slurm.conf
+  template: src=slurm-vpn.conf.j2 dest=/etc/slurm/slurm.conf
+  sudo: true
+  notify: restart slurm
+  when: slurm_use_vpn==True
 
 - name: start slurm
   service: name=slurm state=started
diff --git a/roles/slurm/templates/slurm-vpn.conf.j2 b/roles/slurm/templates/slurm-vpn.conf.j2
new file mode 100644
index 0000000000000000000000000000000000000000..9e4f5867638ae20ebc24a26e018f07c5c4710b59
--- /dev/null
+++ b/roles/slurm/templates/slurm-vpn.conf.j2
@@ -0,0 +1,109 @@
+#
+# Example slurm.conf file. Please run configurator.html
+# (in doc/html) to build a configuration file customized
+# for your environment.
+#
+#
+# slurm.conf file generated by configurator.html.
+#
+# See the slurm.conf man page for more information.
+#
+ClusterName=CIAB
+ControlMachine={{ slurmctrl }}
+ControlAddr={{ slurmctrl }}-vpn
+#BackupController=
+#BackupAddr=
+#
+SlurmUser=slurm
+#SlurmdUser=root
+SlurmctldPort=6817
+SlurmdPort=6818
+AuthType=auth/munge
+#JobCredentialPrivateKey=
+#JobCredentialPublicCertificate=
+StateSaveLocation=/tmp
+SlurmdSpoolDir=/tmp/slurmd
+SwitchType=switch/none
+MpiDefault=none
+SlurmctldPidFile=/var/run/slurmctld.pid
+SlurmdPidFile=/var/run/slurmd.pid
+ProctrackType=proctrack/pgid
+#PluginDir=
+CacheGroups=0
+#FirstJobId=
+ReturnToService=0
+#MaxJobCount=
+#PlugStackConfig=
+#PropagatePrioProcess=
+#PropagateResourceLimits=
+#PropagateResourceLimitsExcept=
+#Prolog=
+#Epilog=
+#SrunProlog=
+#SrunEpilog=
+#TaskProlog=
+#TaskEpilog=
+#TaskPlugin=
+#TrackWCKey=no
+#TreeWidth=50
+#TmpFS=
+#UsePAM=
+#
+# TIMERS
+SlurmctldTimeout=300
+SlurmdTimeout=300
+InactiveLimit=0
+MinJobAge=300
+KillWait=30
+Waittime=0
+#
+# SCHEDULING
+SchedulerType=sched/backfill
+#SchedulerAuth=
+#SchedulerPort=
+#SchedulerRootFilter=
+SelectType=select/linear
+FastSchedule=1
+#PriorityType=priority/multifactor
+#PriorityDecayHalfLife=14-0
+#PriorityUsageResetPeriod=14-0
+#PriorityWeightFairshare=100000
+#PriorityWeightAge=1000
+#PriorityWeightPartition=10000
+#PriorityWeightJobSize=1000
+#PriorityMaxAge=1-0
+#
+# LOGGING
+SlurmctldDebug=3
+#SlurmctldLogFile=
+SlurmdDebug=3
+#SlurmdLogFile=
+JobCompType=jobcomp/none
+#JobCompLoc=
+#
+# ACCOUNTING
+#JobAcctGatherType=jobacct_gather/linux
+#JobAcctGatherFrequency=30
+#
+#AccountingStorageType=accounting_storage/slurmdbd
+#AccountingStorageHost=
+#AccountingStorageLoc=
+#AccountingStoragePass=
+#AccountingStorageUser=
+#
+MpiParams=ports=12000-12999
+# COMPUTE NODES
+{% set nodelist = [] %}
+{% for queue in slurmqueues %}
+{% for node in groups[queue.group] %}
+{% if nodelist.append(node) %}
+{% endif %}
+{% endfor %}
+{% endfor %}
+{% for node in nodelist|unique %}
+NodeName={{ node }} NodeAddr={{ node }}-vpn Procs={{ hostvars[node]['ansible_processor_cores'] }} State=UNKNOWN
+{% endfor %}
+
+{% for queue in slurmqueues %}
+PartitionName={{ queue.name }} Nodes={{ groups[queue.group]|join(',') }}
+{% endfor %}
diff --git a/scripts/makehosts.py b/scripts/makehosts.py
index 52b138893f532f9dc3503b38ace10200780655e4..97e97afac86363a3107f3f066be10586460c05d9 100755
--- a/scripts/makehosts.py
+++ b/scripts/makehosts.py
@@ -20,3 +20,10 @@ for h in hosts.keys():
         for name in hosts[h]:
             string=string+" %s"%(name)
         print string
+
+for h in hosts.keys():
+    if d['hostvars'].has_key(h):
+        if d['hostvars'][h].has_key('ansible_tun0'):
+            string="%s"%(d['hostvars'][h]['ansible_tun0']['ipv4']['address'])
+            string=string+" %s-vpn"%h
+            print string
diff --git a/topplay.yml b/topplay.yml
index d4434f27aa39e2180a613fb7d3a95ce64df39d52..86513d08bf005c91e7e63e30886a42a269fe9784 100644
--- a/topplay.yml
+++ b/topplay.yml
@@ -53,10 +53,17 @@
   roles:
   - { role: OpenVPN-Client }
 
-- hosts: 'SubmitHost'
+- hosts: ComputeNode
+  vars:
+    openmpi_version: 1.8.3
+    build_node: aciab-comp-0
   roles:
       - { role: slurm-build, slurm_version: 14.11.0, munge_version: 0.5.11 }
 
+- hosts: '*'
+  roles:
+  - etcHosts
+
 - hosts: '*'
   vars:
     slurm_version: 14.11.0