diff --git a/roles/provision/tasks/main.yml b/roles/provision/tasks/main.yml
index 3b71e4d40f287e6fefd0be5763aa05e8ec406b1a..27a2cbbd47537625c2e13efa54ff0132b0ab8c4a 100644
--- a/roles/provision/tasks/main.yml
+++ b/roles/provision/tasks/main.yml
@@ -4,5 +4,5 @@
   sudo: true
 
 - name: provision cron job 
-  cron: name=provision job={{ provision }} user=root minute=*/5 state=present
+  cron: name=provision job="/usr/bin/flock -x -n /tmp/provision.lck -c {{ provision }}" user=root minute=*/30 state=present
   sudo: true
diff --git a/roles/provision/templates/provision.sh.j2 b/roles/provision/templates/provision.sh.j2
index 69483a265968419c02dc1715e55caa51821a54fe..d4082c8ae41b59824252396bbc178bdeaf7931ef 100644
--- a/roles/provision/templates/provision.sh.j2
+++ b/roles/provision/templates/provision.sh.j2
@@ -3,6 +3,8 @@
 HOME_DIR={{ home_dir }}
 user_list=($(getent passwd | cut -d ":" -f1))
 log_file="/root/slurm.log"
+export PATH=$PATH:{{ slurm_dir }}/bin
+sacctmgr=$( which sacctmgr )
 
 for user in ${user_list[*]}; do
     {% if project_check is defined %}
@@ -24,15 +26,15 @@ for user in ${user_list[*]}; do
 
             find=$(sacctmgr list cluster ${cluster} | grep ${cluster})
             if [ -z "${find}" ]; then
-                su slurm -c "sacctmgr -i add cluster ${cluster}" || { echo "error to create cluster ${cluster}" >> ${log_file} && exit 1; }
+                su slurm -c "$sacctmgr -i add cluster ${cluster}" || { echo "error to create cluster ${cluster}" >> ${log_file} && exit 1; }
             fi
             find=$(sacctmgr list account ${account} | grep ${account})
             if [ -z "${find}" ]; then
-                su slurm -c "sacctmgr -i add account ${account} Description=CVL Organization=monash cluster=${cluster}" || { echo "error to create account ${account}" >> ${log_file} && exit 1; }
+                su slurm -c "$sacctmgr -i add account ${account} Description=CVL Organization=monash cluster=${cluster}" || { echo "error to create account ${account}" >> ${log_file} && exit 1; }
             fi
             find=$(sacctmgr list user ${user} | grep ${user})
             if [ -z "${find}" ]; then
-                su slurm -c "sacctmgr -i add user ${user} account=${account} cluster=${cluster}" || { echo "error to create user ${user}" >> ${log_file} && exit 1; }
+                su slurm -c "$sacctmgr -i add user ${user} account=${account} cluster=${cluster}" || { echo "error to create user ${user}" >> ${log_file} && exit 1; }
             fi
         fi
     fi
diff --git a/roles/provision/vars/main.yml b/roles/provision/vars/main.yml
index 2e084a92f49c7f6380db5cbc17aa8c2faff2f3cf..ed97d539c095cf1413af30cc23dea272095b97dd 100644
--- a/roles/provision/vars/main.yml
+++ b/roles/provision/vars/main.yml
@@ -1,2 +1 @@
 ---
-  slurm_provision: /root/slurm_provision.sh