diff --git a/roles/vncserver/tasks/main.yml b/roles/vncserver/tasks/main.yml
index db122510846e0dcd90f518a5e35f457949667ae1..59b754ea4eefd5f8af93eb3637413e65502d7d32 100644
--- a/roles/vncserver/tasks/main.yml
+++ b/roles/vncserver/tasks/main.yml
@@ -2,6 +2,9 @@
 #- include_vars: "{{ hostvars[ansible_hostname]['ansible_distribution'] }}_{{ ansible_architecture }}.yml"
 - include_vars: "{{ ansible_distribution }}_{{ ansible_architecture }}.yml"
 
+- include_vars: "CentOS_7_x86_64.yml"
+  when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"
+
 # Use mate DE on systems that have moved to gnome3, since there is no gpu acceleration by default on NeCTAR openstack
 # Trusty (Ubuntu 14.04 LTS) needs repos added. Wheezy (Debian Stable) gets mate from backports, Utopic (Ubuntu 14.10) Jessie (Debian testing) and Sid (Debian unstable) get it by default
 - name: add repos apt
@@ -14,6 +17,18 @@
   sudo: true
   when: ansible_distribution_release == 'trusty'
 
+- name: add epel on CentOS 7
+  shell: rpm -iUvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
+  sudo: true
+  when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"
+  ignore_errors: true
+
+- name: add epel on CentOS 7
+  shell: yum -y update
+  sudo: true
+  when: ansible_distribution == "CentOS" and ansible_distribution_major_version == "7"
+
+
 - name: install system packages apt
   apt: name={{ item }} state=installed update_cache=true  force=yes
   sudo: true
@@ -21,7 +36,7 @@
   when: ansible_os_family == 'Debian'
 
 - name: install system packages yum
-  yum: name={{ item }} state=installed
+  yum: name={{ item }} state=installed update_cache=yes
   sudo: true
   with_items: system_packages
   when: ansible_os_family == 'RedHat'
diff --git a/roles/vncserver/vars/CentOS_7_x86_64.yml b/roles/vncserver/vars/CentOS_7_x86_64.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a30a4a2f92cd759215b848de1d1fb15b5fc39487
--- /dev/null
+++ b/roles/vncserver/vars/CentOS_7_x86_64.yml
@@ -0,0 +1,15 @@
+---
+ system_packages:
+   - "@desktop"
+   - tigervnc-server
+   - "@xfce"
+   - libXcomposite
+   - libXdamage
+   - mesa-libEGL
+   - mesa-libgbm
+   - harfbuzz
+   - mesa-libglapi
+   - graphite2
+   - xterm
+   - libpng
+   - "@MATE Desktop"
diff --git a/roles/vncserver/vars/CentOS_x86_64.yml b/roles/vncserver/vars/CentOS_x86_64.yml
index 640f11fbcf3e5b796f4aa6ea83cdaa625eb6dc8c..66651a5df9d3f35adad1d2ad3b7e6ff4bbf0925e 100644
--- a/roles/vncserver/vars/CentOS_x86_64.yml
+++ b/roles/vncserver/vars/CentOS_x86_64.yml
@@ -2,3 +2,4 @@
  system_packages:
    - "@desktop"
    - tigervnc-server
+   - "@xfce"
diff --git a/roles/vncserver/vars/Ubuntu_x86_64.yml b/roles/vncserver/vars/Ubuntu_x86_64.yml
index db5695651f89972900a03b8fe91fa689e9ac88c3..da1e1e2413c1577a12d9a5325fb8f0d89462191d 100644
--- a/roles/vncserver/vars/Ubuntu_x86_64.yml
+++ b/roles/vncserver/vars/Ubuntu_x86_64.yml
@@ -2,3 +2,5 @@
  system_packages:
    - mate-desktop-environment
    - tightvncserver
+   - xfce4-session
+   - xfwm4