Faidon Liambotis has submitted this change and it was merged. Change subject: geoip: switch data::maxmind to geoipupdate ......................................................................
geoip: switch data::maxmind to geoipupdate geoipupdate was forked off the GeoIP distribution and is maintained separately. The newer version supports GeoIP2 databases, HTTPS, as well as setting a proxy from the configuration file. geoipupdate packages have been backported and are already in apt for both precise and trusty. Change-Id: I926b488c320035f591518d817ef6234c61889dbb --- M modules/geoip/manifests/data/maxmind.pp M modules/geoip/templates/GeoIP.conf.erb M modules/puppetmaster/manifests/geoip.pp 3 files changed, 29 insertions(+), 27 deletions(-) Approvals: Faidon Liambotis: Looks good to me, approved jenkins-bot: Verified diff --git a/modules/geoip/manifests/data/maxmind.pp b/modules/geoip/manifests/data/maxmind.pp index 62ae383..70f0055 100644 --- a/modules/geoip/manifests/data/maxmind.pp +++ b/modules/geoip/manifests/data/maxmind.pp @@ -5,12 +5,11 @@ # # == Parameters # $data_directory - Where the data files should live. -# $environment - The environment parameter to pass to exec and cron for the -# geoipupdate download command. default: undef # $license_key - MaxMind license key. Required. # $user_id - MaxMind user id. Required. # $product_ids - Array of MaxMind product ids to specify which data files # to download. default: [106] (Country) +# $proxy - Proxy server to use to fetch files. Optional. # == Example # You can use this class on your puppetmaster to stick the GeoIP .dat files # into a fileserver module. Once the files are there, you can use the @@ -29,13 +28,14 @@ # class geoip::data::maxmind( $data_directory = '/usr/share/GeoIP', - $environment = undef, $license_key = false, $user_id = false, - $product_ids = [106]) -{ - # we need the geoipupdate binary from geoip-bin - require geoip::bin + $product_ids = [106], + $proxy = undef +) { + package { 'geoipupdate': + ensure => present, + } if ! defined(File[$data_directory]) { file { $data_directory: @@ -57,22 +57,23 @@ # command to run to update the GeoIP database files $geoipupdate_command = "/usr/bin/geoipupdate -f ${config_file} -d ${data_directory}" - # Go ahead and exec geoipupdate now, so that - # we can be sure we have these files if - # this is the first time puppetmaster is - # running this class. + # Go ahead and exec geoipupdate now, so that we can be sure we have these + # files if this is the first time puppetmaster is running this class. exec { 'geoipupdate': command => $geoipupdate_command, refreshonly => true, subscribe => File[$config_file], - # geoipupdate comes from package geoip-bin - require => [Package['geoip-bin'], File[$config_file], File[$data_directory]], + require => [ + Package['geoipupdate'], + File[$config_file], + File[$data_directory] + ], } $geoipupdate_log = '/var/log/geoipupdate.log' - # Set up a cron to run geoipupdate weekly. - # This will download .dat files for the specified - # Maxmind Product IDs. + + # Set up a cron to run geoipupdate weekly. This will download .dat files for + # the specified MaxMind Product IDs. cron { 'geoipupdate': ensure => present, command => "/bin/echo -e \"\$(/bin/date): geoipupdate downloading MaxMind .dat files into ${data_directory}\" >> ${geoipupdate_log} && ${geoipupdate_command} &>> /var/log/geoipupdate.log", @@ -80,19 +81,16 @@ weekday => 0, hour => 3, minute => 30, - require => [Package['geoip-bin'], File[$config_file], File[$data_directory]], + require => [ + Package['geoipupdate'], + File[$config_file], + File[$data_directory] + ], } # logrotate for geoipupdate.log file { '/etc/logrotate.d/geoipupdate': content => template('geoip/geoipupdate.logrotate.erb'), require => Cron['geoipupdate'], - } - - # if $environment was passed in, - # set it on the geoipupdate commands - if ($environment != undef) { - Exec['geoipupdate'] { environment => $environment } - Cron['geoipupdate'] { environment => $environment } } } diff --git a/modules/geoip/templates/GeoIP.conf.erb b/modules/geoip/templates/GeoIP.conf.erb index 9bc3b458..475b877 100644 --- a/modules/geoip/templates/GeoIP.conf.erb +++ b/modules/geoip/templates/GeoIP.conf.erb @@ -19,3 +19,7 @@ # 133 - GeoIPCity.dat City database # 115 - GeoIPRegion.dat Region database ProductIds <%= @product_ids.join(' ') %> + +<% if @proxy -%> +Proxy <%= @proxy %> +<% end -%> diff --git a/modules/puppetmaster/manifests/geoip.pp b/modules/puppetmaster/manifests/geoip.pp index 292e9e3..8539ab1 100644 --- a/modules/puppetmaster/manifests/geoip.pp +++ b/modules/puppetmaster/manifests/geoip.pp @@ -4,7 +4,7 @@ # normal puppet File resource (see the geoip module for more) $geoip_destdir = "${puppetmaster::volatiledir}/GeoIP" - $environment = "http_proxy=http://webproxy.${::site}.wmnet:8080" + $webproxy = "http://webproxy.${::site}.wmnet:8080" # geoip::data classes depend on this file { $geoip_destdir: @@ -14,7 +14,7 @@ # fetch the GeoLite databases class { 'geoip::data::lite': data_directory => $geoip_destdir, - environment => $environment, + environment => "http_proxy=$webproxy", } if $is_labs_puppet_master { @@ -34,7 +34,7 @@ class { 'geoip::data::maxmind': data_directory => $geoip_destdir, - environment => $environment, + proxy => $webproxy, license_key => $passwords::geoip::license_key, user_id => $passwords::geoip::user_id, product_ids => [ -- To view, visit https://gerrit.wikimedia.org/r/172444 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I926b488c320035f591518d817ef6234c61889dbb Gerrit-PatchSet: 3 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Faidon Liambotis <fai...@wikimedia.org> Gerrit-Reviewer: Faidon Liambotis <fai...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits