diff --git a/manifests/agent.pp b/manifests/agent.pp
index 7cf77008a..7469d04a2 100644
--- a/manifests/agent.pp
+++ b/manifests/agent.pp
@@ -251,10 +251,15 @@
     }
   }
 
-  # Check if manage_repo is true.
-  if $manage_repo {
-    include zabbix::repo
-    Package['zabbix-agent'] {require => Class['zabbix::repo']}
+  # Only include the repo class if it has not yet been included
+  unless defined(Class['Zabbix::Repo']) {
+    class {'zabbix::repo':
+      manage_repo    => $manage_repo,
+      zabbix_version => $zabbix_version,
+    }
+    Package['zabbix-agent'] {
+      require => Class['zabbix::repo']
+    }
   }
 
   # Installing the package
diff --git a/manifests/init.pp b/manifests/init.pp
index df041b58b..12a65e313 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -168,6 +168,7 @@
   class { 'zabbix::web':
     zabbix_url                               => $zabbix_url,
     database_type                            => $database_type,
+    manage_repo                              => $manage_repo,
     zabbix_version                           => $zabbix_version,
     zabbix_timezone                          => $zabbix_timezone,
     manage_vhost                             => $manage_vhost,
@@ -205,6 +206,7 @@
     database_path           => $database_path,
     zabbix_version          => $zabbix_version,
     manage_firewall         => $manage_firewall,
+    manage_repo             => $manage_repo,
     nodeid                  => $nodeid,
     listenport              => $listenport,
     sourceip                => $sourceip,
diff --git a/manifests/javagateway.pp b/manifests/javagateway.pp
index f5a156fd3..e012d838a 100644
--- a/manifests/javagateway.pp
+++ b/manifests/javagateway.pp
@@ -62,10 +62,15 @@
   validate_bool($manage_firewall)
   validate_bool($manage_repo)
 
-  # Check if manage_repo is true.
-  if $manage_repo {
-    include zabbix::repo
-    Package['zabbix-java-gateway'] {require => Class['zabbix::repo']}
+  # Only include the repo class if it has not yet been included
+  unless defind(Class['Zabbix::Repo']) {
+    class { 'zabbix::repo':
+      manage_repo    => $manage_repo,
+      zabbix_version => $zabbix_version,
+    }
+    Package['zabbix-java-gateway'] {
+      require => Class['zabbix::repo']
+    }
   }
 
   # Installing the package
diff --git a/manifests/proxy.pp b/manifests/proxy.pp
index 12783c14f..458516eed 100644
--- a/manifests/proxy.pp
+++ b/manifests/proxy.pp
@@ -450,10 +450,15 @@
     }
   }
 
-  # Check if manage_repo is true.
-  if $manage_repo {
-    include zabbix::repo
-    Package["zabbix-proxy-${db}"] {require => Class['zabbix::repo']}
+  # Only include the repo class if it has not yet been included
+  unless defind(Class['Zabbix::Repo']) {
+    class { 'zabbix::repo':
+      manage_repo    => $manage_repo,
+      zabbix_version => $zabbix_version,
+    }
+    Package["zabbix-proxy-${db}"] {
+      require => Class['zabbix::repo']
+    }
   }
 
   # Now we are going to install the correct packages.
diff --git a/manifests/server.pp b/manifests/server.pp
index ba0452a64..f2811f29b 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -22,6 +22,9 @@
 #   This is the zabbix version.
 #   Example: 2.4
 #
+# [*manage_repo*]
+#   When true (default) this module will manage the Zabbix repository
+#
 # [*zabbix_package_state*]
 #   The state of the package that needs to be installed: present or latest.
 #   Default: present
@@ -263,6 +266,7 @@
   $zabbix_version          = $zabbix::params::zabbix_version,
   $zabbix_package_state    = $zabbix::params::zabbix_package_state,
   $manage_firewall         = $zabbix::params::manage_firewall,
+  $manage_repo             = $zabbix::params::manage_repo,
   $server_configfile_path  = $zabbix::params::server_configfile_path,
   $server_config_owner     = $zabbix::params::server_config_owner,
   $server_config_group     = $zabbix::params::server_config_group,
@@ -332,11 +336,14 @@
   $loadmodule              = $zabbix::params::server_loadmodule,
   ) inherits zabbix::params {
 
-  class { 'zabbix::repo':
-    zabbix_version => $zabbix_version,
-    manage_repo    => $manage_repo,
+  # Only include the repo class if it has not yet been included
+  unless defined(Class['Zabbix::Repo']) {
+    class { 'zabbix::repo':
+      zabbix_version => $zabbix_version,
+      manage_repo    => $manage_repo,
+    }
   }
-  
+
   # Check some if they are boolean
   validate_bool($manage_firewall)
 
diff --git a/manifests/web.pp b/manifests/web.pp
index ee44cb11b..01618a221 100644
--- a/manifests/web.pp
+++ b/manifests/web.pp
@@ -19,6 +19,9 @@
 #   - postgresql
 #   - mysql
 #
+# [*manage_repo*]
+#   When true, it will create repository for installing the webinterface.
+#
 # [*zabbix_version*]
 #   This is the zabbix version.
 #   Example: 2.4
@@ -148,6 +151,7 @@
 class zabbix::web (
   $zabbix_url                               = '',
   $database_type                            = $zabbix::params::database_type,
+  $manage_repo                              = $zabbix::params::manage_repo,
   $zabbix_version                           = $zabbix::params::zabbix_version,
   $zabbix_timezone                          = $zabbix::params::zabbix_timezone,
   $zabbix_package_state                     = $zabbix::params::zabbix_package_state,
@@ -180,7 +184,13 @@
   $apache_php_always_populate_raw_post_data = $zabbix::params::apache_php_always_populate_raw_post_data,
 ) inherits zabbix::params {
 
-  include zabbix::repo
+  # Only include the repo class if it has not yet been included
+  unless defined(Class['Zabbix::Repo']) {
+    class { 'zabbix::repo':
+      manage_repo    => $manage_repo,
+      zabbix_version => $zabbix_version,
+    }
+  }
 
   # use the correct db.
   case $database_type {