diff --git a/tasks/galera_install.yml b/tasks/galera_install.yml
index 1c3adab9..e0562552 100644
--- a/tasks/galera_install.yml
+++ b/tasks/galera_install.yml
@@ -13,18 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- include: galera_install_apt.yml
-  static: no
-  when:
-    - ansible_pkg_mgr == 'apt'
+- include: "galera_install_{{ ansible_pkg_mgr }}.yml"
   tags:
     - install-apt
-
-- include: galera_install_yum.yml
-  static: no
-  when:
-    - ansible_pkg_mgr == 'yum'
-  tags:
     - install-yum
 
 - name: Install pip packages
diff --git a/tasks/galera_install_apt.yml b/tasks/galera_install_apt.yml
index e22e62d8..c1bf46e1 100644
--- a/tasks/galera_install_apt.yml
+++ b/tasks/galera_install_apt.yml
@@ -13,20 +13,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- name: Install galera apt pre packages
-  apt:
-    pkg: "{{ item }}"
-    state: "{{ galera_server_package_state }}"
-    update_cache: yes
-    cache_valid_time: "{{ cache_timeout }}"
-  register: install_packages
-  until: install_packages|success
-  retries: 5
-  delay: 2
-  with_items: "{{ galera_server_required_distro_packages }}"
-  tags:
-    - galera-pre-apt-packages
-
 - name: Add galera apt-keys
   apt_key:
     id: "{{ item.hash_id }}"
@@ -111,45 +97,21 @@
     mode: "0755"
     backup: yes
 
-- name: Install galera packages
+- name: Install galera_server role remote packages (apt)
   apt:
-    pkg: "{{ item }}"
+    name: "{{ item }}"
     state: "{{ galera_server_package_state }}"
     update_cache: yes
     cache_valid_time: "{{ add_repos | changed | ternary('0', cache_timeout) }}"
-  register: install_packages
-  until: install_packages|success
-  retries: 5
-  delay: 2
-  with_items: "{{ galera_server_mariadb_distro_packages }}"
-  notify: Restart mysql
-  tags:
-    - galera-apt-packages
+  with_items:
+    - "{{ galera_packages_list | selectattr('enabled') | rejectattr('local_pkg') | sum(attribute='packages', start=[]) }}"
 
-- name: Install percona-xtrabackup package from .deb
+- name: Install galera_server role local packages (apt)
   apt:
-    deb: "{{ percona_package_path }}"
+    deb: "{{ item }}"
     force: yes
-  when: not use_percona_upstream | bool
-  tags:
-    - percona-apt-packages
-
-- name: Install qpress package from .deb
-  apt:
-    deb: "{{ qpress_package_path }}"
-    force: yes
-  when: not use_percona_upstream | bool
-  tags:
-    - percona-apt-packages
-
-- name: Install percona packages
-  apt:
-    pkg: "{{ item }}"
-    state: installed
-  with_items: "{{ galera_server_percona_distro_packages }}"
-  when: use_percona_upstream | bool
-  tags:
-    - percona-apt-packages
+  with_items:
+    - "{{ galera_packages_list | selectattr('enabled') | selectattr('local_pkg') | sum(attribute='packages', start=[]) }}"
 
 - name: Remove policy-rc
   file:
diff --git a/tasks/galera_install_yum.yml b/tasks/galera_install_yum.yml
index c156f998..a4fd62bb 100644
--- a/tasks/galera_install_yum.yml
+++ b/tasks/galera_install_yum.yml
@@ -67,18 +67,6 @@
   tags:
     - galera-repos
 
-- name: Install galera yum pre packages
-  yum:
-    pkg: "{{ item }}"
-    state: "{{ galera_server_package_state }}"
-  register: install_packages
-  until: install_packages|success
-  retries: 5
-  delay: 2
-  with_items: "{{ galera_server_required_distro_packages }}"
-  tags:
-    - galera-pre-yum-packages
-
 - name: Install percona repo
   yum:
     pkg: "{{ galera_percona_xtrabackup_repo.repo }}"
@@ -91,30 +79,12 @@
   tags:
     - galera-pre-yum-packages
 
-- name: Install percona yum packages
+- name: Install galera_server role remote packages (yum)
   yum:
-    pkg: "{{ item }}"
+    name: "{{ item }}"
     state: "{{ galera_server_package_state }}"
-  register: install_packages
-  until: install_packages|success
-  retries: 5
-  delay: 2
-  with_items: "{{ galera_server_percona_distro_packages }}"
-  when: use_percona_upstream | bool
-  tags:
-    - galera-pre-yum-packages
-
-- name: Install galera yum packages
-  yum:
-    pkg: "{{ item }}"
-    state: "{{ galera_server_package_state }}"
-  register: install_packages
-  until: install_packages|success
-  retries: 5
-  delay: 2
-  with_items: "{{ galera_server_mariadb_distro_packages }}"
-  tags:
-    - galera-pre-yum-packages
+  with_items:
+    - "{{ galera_packages_list | selectattr('enabled') | sum(attribute='packages', start=[]) }}"
 
 - name: Enable mysql to start at boot
   service:
diff --git a/tasks/main.yml b/tasks/main.yml
index 9ca5d7ad..c4780420 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -36,6 +36,11 @@
   tags:
     - always
 
+- name: Gather variables that apply to all operating systems
+  include_vars: common.yml
+  tags:
+    - always
+
 - include: galera_upgrade_check.yml
   tags: galera_server-upgrade
 
diff --git a/vars/common.yml b/vars/common.yml
new file mode 100644
index 00000000..7dfa3d20
--- /dev/null
+++ b/vars/common.yml
@@ -0,0 +1,31 @@
+---
+# Copyright 2017, Rackspace US, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+galera_packages_list:
+  - packages: "{{ galera_server_required_distro_packages }}"
+    enabled: yes
+    local_pkg: no
+  - packages: "{{ galera_server_mariadb_distro_packages }}"
+    enabled: yes
+    local_pkg: no
+  - packages: "{{ galera_server_percona_distro_packages }}"
+    enabled: "{{ use_percona_upstream }}"
+    local_pkg: no
+  - packages: "{{ [percona_package_path] }}"
+    enabled: "{{ not use_percona_upstream }}"
+    local_pkg: yes
+  - packages: "{{ [qpress_package_path] }}"
+    enabled: "{{ not use_percona_upstream }}"
+    local_pkg: yes