diff --git a/roles/enable_lmod/tasks/main.yml b/roles/enable_lmod/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4676f706030c27b4b86e35a342e26fb3ae9ad74b
--- /dev/null
+++ b/roles/enable_lmod/tasks/main.yml
@@ -0,0 +1,33 @@
+---
+- include_vars: "{{ ansible_os_family }}.yml"
+
+- name: install lua
+  yum: name={{ item }} state=installed
+  with_items:
+    - lua
+    - lua-filesystem
+    - lua-posix
+  sudo: true
+  when: ansible_os_family == 'RedHat'
+
+- name: install lua
+  apt: name={{ item }} state=installed
+  with_items:
+    - lua5.2
+    - lua5.2
+    - lua-filesystem
+    - lua-bitop
+    - lua-posix
+    - liblua5.2-0
+    - liblua5.2-dev
+    - tcl
+  sudo: true
+  when: ansible_os_family == 'Debian'
+
+- name: link bash
+  file: src={{ soft_dir }}/lmod/lmod/init/bash dest=/etc/profile.d/lmod.sh state=link
+  sudo: true
+
+- name: link csh
+  file: src={{ soft_dir }}/lmod/lmod/init/cshrc dest=/etc/profile.d/lmod.csh state=link
+  sudo: true
diff --git a/roles/enable_lmod/vars/Debian.yml b/roles/enable_lmod/vars/Debian.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f1a8d1448746c5492a52b1e29983120d6faf9831
--- /dev/null
+++ b/roles/enable_lmod/vars/Debian.yml
@@ -0,0 +1,2 @@
+---
+lua_include: /usr/include/lua5.2
diff --git a/roles/enable_lmod/vars/RedHat.yml b/roles/enable_lmod/vars/RedHat.yml
new file mode 100644
index 0000000000000000000000000000000000000000..533e08b0df15750498e38a23db460db834944a9b
--- /dev/null
+++ b/roles/enable_lmod/vars/RedHat.yml
@@ -0,0 +1,2 @@
+---
+lua_include: /usr/local
diff --git a/roles/enable_lmod/vars/main.yml b/roles/enable_lmod/vars/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ce2423328fad285e5b22b30a5257051c4475c96b
--- /dev/null
+++ b/roles/enable_lmod/vars/main.yml
@@ -0,0 +1,4 @@
+---
+source_dir: /tmp
+soft_dir: /usr/local
+lmod_version: 5.8.6
diff --git a/roles/link_usr_local/tasks/main.yml b/roles/link_usr_local/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7f3e211f98ec1ec266cf0117b663e77f05e5c232
--- /dev/null
+++ b/roles/link_usr_local/tasks/main.yml
@@ -0,0 +1,13 @@
+---
+- name: stat usrlocal
+  stat: path={{ dest }}
+  register: stat_usrlocal
+
+- name: mv
+  command: mv /usr/local /usr/local_old
+  when: stat_usrlocal.stat.isdir == True
+  sudo: true
+
+- name: link
+  file: src="{{ src }}" dest="{{ dest }}" state=link
+  sudo: true
diff --git a/roles/lmod/tasks/main.yml b/roles/lmod/tasks/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..7c63b8f05e12e703f84c1442e620cbfc0e38521b
--- /dev/null
+++ b/roles/lmod/tasks/main.yml
@@ -0,0 +1,44 @@
+---
+- include_vars: "{{ ansible_os_family }}.yml"
+
+- name: install lua
+  yum: name={{ item }} state=installed
+  with_items:
+    - lua
+    - lua-filesystem
+    - lua-posix
+  sudo: true
+  when: ansible_os_family == 'RedHat'
+
+- name: install lua
+  apt: name={{ item }} state=installed
+  with_items:
+    - lua5.2
+    - lua5.2
+    - lua-filesystem
+    - lua-bitop
+    - lua-posix
+    - liblua5.2-0
+    - liblua5.2-dev
+    - tcl
+  sudo: true
+  when: ansible_os_family == 'Debian'
+
+- name: Download LMOD
+  get_url:
+    url=http://downloads.sourceforge.net/project/lmod/Lmod-{{ lmod_version }}.tar.bz2
+    dest={{source_dir}}/Lmod-{{ lmod_version }}.tar.bz2
+    mode=0444
+
+- name: Uncompress LMOD
+  unarchive:
+    src={{ source_dir }}/Lmod-{{ lmod_version }}.tar.bz2
+    dest={{ source_dir }}
+    copy=no
+    creates={{source_dir}}/Lmod-{{ lmod_version }}/README
+
+- name: Compile and install Lmod
+  shell: cd {{ source_dir }}/Lmod-{{ lmod_version }}; ./configure --prefix={{ soft_dir }} --with-mpathSearch=YES --with-caseIndependentSorting=YES && make install LUA_INCLUDE={{ lua_include }}
+  args:
+    creates: "{{ soft_dir }}/lmod/{{ lmod_version }}"
+  sudo: true
diff --git a/roles/lmod/vars/Debian.yml b/roles/lmod/vars/Debian.yml
new file mode 100644
index 0000000000000000000000000000000000000000..f1a8d1448746c5492a52b1e29983120d6faf9831
--- /dev/null
+++ b/roles/lmod/vars/Debian.yml
@@ -0,0 +1,2 @@
+---
+lua_include: /usr/include/lua5.2
diff --git a/roles/lmod/vars/RedHat.yml b/roles/lmod/vars/RedHat.yml
new file mode 100644
index 0000000000000000000000000000000000000000..533e08b0df15750498e38a23db460db834944a9b
--- /dev/null
+++ b/roles/lmod/vars/RedHat.yml
@@ -0,0 +1,2 @@
+---
+lua_include: /usr/local
diff --git a/roles/lmod/vars/main.yml b/roles/lmod/vars/main.yml
new file mode 100644
index 0000000000000000000000000000000000000000..ce2423328fad285e5b22b30a5257051c4475c96b
--- /dev/null
+++ b/roles/lmod/vars/main.yml
@@ -0,0 +1,4 @@
+---
+source_dir: /tmp
+soft_dir: /usr/local
+lmod_version: 5.8.6
diff --git a/roles/slurm-from-source/tasks/installCgroup.yml b/roles/slurm-from-source/tasks/installCgroup.yml
index b81bb6b2fb8b6194744f62ab839b090355efe761..9b21e1b4d7fba85c0b47e8ce12663faedd8b19f4 100644
--- a/roles/slurm-from-source/tasks/installCgroup.yml
+++ b/roles/slurm-from-source/tasks/installCgroup.yml
@@ -13,6 +13,7 @@
     - libcgmanager0 
   sudo: true
   when: ansible_os_family == "Debian"    
+  sudo: true
 
 - name: config cgroup.conf file
   template: dest={{ slurm_dir }}/etc/cgroup.conf src=cgroup.conf.j2 mode=644
diff --git a/roles/slurm-from-source/tasks/main.yml b/roles/slurm-from-source/tasks/main.yml
index 3109758e85483a59295f5242ff797f226793959a..8a22cc68de4a29ebaaab94642227c483ace4c061 100644
--- a/roles/slurm-from-source/tasks/main.yml
+++ b/roles/slurm-from-source/tasks/main.yml
@@ -87,6 +87,7 @@
     - mysql-client
     - python-mysqldb
     - libmysqlclient-dev
+    - lua5.2
   when: ansible_os_family == "Debian"
 
 - include: installMungeFromSource.yml
@@ -151,7 +152,7 @@
   delegate_to: "{{ slurmctrl }}"
   run_once: true
   sudo: true
-  when: slurm_lua 
+  when: slurm_lua is defined
 
 - include: installCgroup.yml
 - include: installNhc.yml
diff --git a/roles/slurm-from-source/templates/slurm.conf.j2 b/roles/slurm-from-source/templates/slurm.conf.j2
index 949730f6e30bc6c0edfc56c40c7544c51347c690..b3770b09ec71e4128d0819113dc14982a256a52d 100644
--- a/roles/slurm-from-source/templates/slurm.conf.j2
+++ b/roles/slurm-from-source/templates/slurm.conf.j2
@@ -46,7 +46,7 @@ ReturnToService=1
 TaskPlugin=task/cgroup
 #TaskPlugin=task/affinity
 #TaskPlugin=task/affinity,task/cgroup
-{% if slurm_lua %}
+{% if slurm_lua is defined %}
 JobSubmitPlugins=lua
 {% endif %}
 OverTimeLimit=1