From 9096ab91ab87b6f34fea19ab22f96335264b47e5 Mon Sep 17 00:00:00 2001
From: CVL-GitHub <jupiter.hu@monash.edu>
Date: Mon, 9 Mar 2015 12:31:24 +1100
Subject: [PATCH] fixed slurm provision script

---
 roles/slurm-provision/tasks/main.yml          |  8 +++++
 .../templates/slurm_provision.sh              | 34 ++++++++++++++++++
 .../templates/slurm_provision.sh.j2           | 35 +++++++++++++++++++
 .../templates/slurm_provision.sh.j2.v1        | 34 ++++++++++++++++++
 roles/slurm-provision/vars/readme.txt         |  1 +
 5 files changed, 112 insertions(+)
 create mode 100644 roles/slurm-provision/tasks/main.yml
 create mode 100644 roles/slurm-provision/templates/slurm_provision.sh
 create mode 100644 roles/slurm-provision/templates/slurm_provision.sh.j2
 create mode 100644 roles/slurm-provision/templates/slurm_provision.sh.j2.v1
 create mode 100644 roles/slurm-provision/vars/readme.txt

diff --git a/roles/slurm-provision/tasks/main.yml b/roles/slurm-provision/tasks/main.yml
new file mode 100644
index 00000000..4ed1e2c6
--- /dev/null
+++ b/roles/slurm-provision/tasks/main.yml
@@ -0,0 +1,8 @@
+---
+- name: copy slurm provision template 
+  template: src=slurm_provision.sh.j2 dest={{ slurm_provision }} mode=755 owner=root
+  sudo: true
+
+- name: slurm cron job 
+  cron: name=slurm-provision job={{ slurm_provision }} user=root minute=*/5 state=present
+  sudo: true
diff --git a/roles/slurm-provision/templates/slurm_provision.sh b/roles/slurm-provision/templates/slurm_provision.sh
new file mode 100644
index 00000000..830d377e
--- /dev/null
+++ b/roles/slurm-provision/templates/slurm_provision.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+CVL_HOME="/cvl/home"
+user_list=($(getent passwd | cut -d ":" -f1))
+log_file="/root/slurm.log"
+
+for user in ${user_list[*]}; do
+    uid=$(id -u ${user})
+    gid=$(id -g ${user})
+    user_home=${CVL_HOME}/${user}
+    if [ ! -d ${user_home} ]; then
+        mkdir -p ${user_home}
+        cp -r /etc/skel/* ${user_home}
+        chown -R ${uid}:${gid} ${user_home}
+        chmod 700 ${user_home}
+
+        account=cvl
+        cluster=m2cvl
+        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; }
+        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; }
+        fi
+        find=$(sacctmgr list user ${username} | grep ${username})
+        if [ -z "${find}" ]; then
+            su slurm -c "sacctmgr -i add user ${username} account=${account} cluster=${cluster}" || { echo "error to create user ${username}" >> ${log_file} && exit 1; }
+        fi
+    fi
+done
+
+
diff --git a/roles/slurm-provision/templates/slurm_provision.sh.j2 b/roles/slurm-provision/templates/slurm_provision.sh.j2
new file mode 100644
index 00000000..8cf5376e
--- /dev/null
+++ b/roles/slurm-provision/templates/slurm_provision.sh.j2
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+CVL_HOME="/cvl/home"
+user_list=($(getent passwd | cut -d ":" -f1))
+log_file="/root/slurm.log"
+
+for user in ${user_list[*]}; do
+    uid=$(id -u ${user})
+    gid=$(id -g ${user})
+    user_home=${CVL_HOME}/${user}
+    if [ ! -d ${user_home} ]; then
+        mkdir -p ${user_home}
+        cp -r /etc/skel/* ${user_home}
+        chown -R ${uid}:${gid} ${user_home}
+        chmod 700 ${user_home}
+
+        account={{ projectname }}
+        cluster={{ clustername }}
+
+        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; }
+        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; }
+        fi
+        find=$(sacctmgr list user ${username} | grep ${username})
+        if [ -z "${find}" ]; then
+            su slurm -c "sacctmgr -i add user ${username} account=${account} cluster=${cluster}" || { echo "error to create user ${username}" >> ${log_file} && exit 1; }
+        fi
+    fi
+done
+
+
diff --git a/roles/slurm-provision/templates/slurm_provision.sh.j2.v1 b/roles/slurm-provision/templates/slurm_provision.sh.j2.v1
new file mode 100644
index 00000000..2b8bf1f1
--- /dev/null
+++ b/roles/slurm-provision/templates/slurm_provision.sh.j2.v1
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+CVL_HOME="/cvl/home"
+user_list=($(getent passwd | cut -d ":" -f1))
+log_file="/root/slurm.log"
+
+for user in ${user_list[*]}; do
+    uid=$(id -u ${user})
+    gid=$(id -g ${user})
+    user_home=${CVL_HOME}/${user}
+    if [ ! -d ${user_home} ]; then
+        mkdir -p ${user_home}
+        cp -r /etc/skel/* ${user_home}
+        chown -R ${uid}:${gid} ${user_home}
+        chmod 700 ${user_home}
+
+        account={{ projectname }}
+        cluster={{ clustername }}
+        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; }
+        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; }
+        fi
+        find=$(sacctmgr list user ${username} | grep ${username})
+        if [ -z "${find}" ]; then
+            su slurm -c "sacctmgr -i add user ${username} account=${account} cluster=${cluster}" || { echo "error to create user ${username}" >> ${log_file} && exit 1; }
+        fi
+    fi
+done
+
+
diff --git a/roles/slurm-provision/vars/readme.txt b/roles/slurm-provision/vars/readme.txt
new file mode 100644
index 00000000..5c0294c5
--- /dev/null
+++ b/roles/slurm-provision/vars/readme.txt
@@ -0,0 +1 @@
+slurm_provision: "/usr/local/sbin/slurmu_provision.sh"
-- 
GitLab