Page MenuHomePhabricator

role::puppetmaster::standalone on stretch: Unable to locate package geoipupdate
Closed, InvalidPublic

Description

I tried to make a VPS node a self-hosted puppetmaster to test a Puppet module I'm writing. After applying role::puppet::self, provisioning failed:

root@xt-pp2:/home/maxsem# puppet agent -tv
Warning: Certificate 'Puppet CA: virt1000.wikimedia.org' will expire on 2017-08-15T20:55:45UTC
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for xt-pp2.xtools.eqiad.wmflabs
Info: Applying configuration version '1501200654'
Notice: /Stage[main]/Packages::Python_mysqldb/Package[python-mysqldb]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Packages::Python3_ldap3/Package[python3-ldap3]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Puppetmaster::Gitclone/File[/etc/puppet/templates]/ensure: created
Notice: /Stage[main]/Puppetmaster::Ssl/File[/var/lib/puppet/server]/ensure: created
Notice: /Stage[main]/Puppetmaster::Passenger/Package[puppetmaster-passenger]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Puppetmaster::Gitclone/File[/etc/puppet/environments]/ensure: created
Info: /Stage[main]/Puppetmaster::Gitclone/File[/etc/puppet/manifests]: Recursively backing up to filebucket
Notice: /Stage[main]/Puppetmaster::Gitclone/File[/etc/puppet/manifests]/ensure: ensure changed 'directory' to 'link'
Notice: /Stage[main]/Geoip::Data::Maxmind/File[/etc/GeoIP.conf]/ensure: defined content as '{md5}79383c104d2f2ee599fa100f23d8d030'
Info: /Stage[main]/Geoip::Data::Maxmind/File[/etc/GeoIP.conf]: Scheduling refresh of Exec[geoipupdate]
Notice: /Stage[main]/Packages::Links/Package[links]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Puppetmaster::Scripts/File[/usr/local/bin/puppet-merge]/ensure: created
Notice: /Stage[main]/Puppetmaster::Base_repo/File[/var/lib/git/operations]/ensure: created
Notice: /Stage[main]/Puppetmaster::Gitclone/File[/var/lib/puppet/volatile]/ensure: created
Notice: /Stage[main]/Puppetmaster::Gitclone/File[/var/lib/puppet/volatile/misc]/ensure: created
Notice: /Stage[main]/Packages::Python3_yaml/Package[python3-yaml]/ensure: ensure changed 'purged' to 'present'
Notice: /Stage[main]/Puppetmaster::Scripts/File[/usr/local/bin/puppet-facts-export]/ensure: defined content as '{md5}8ca1c6250839ed20d56b6b3fedd99b3d'
Notice: /Stage[main]/Puppetmaster::Gitpuppet/User[gitpuppet]/ensure: created
Notice: /Stage[main]/Puppetmaster::Gitclone/File[/var/lib/git/labs]/ensure: created
Notice: /Stage[main]/Puppetmaster::Gitclone/Git::Clone[labs/private]/File[/var/lib/git/labs/private]/ensure: created
Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install geoipupdate' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package geoipupdate
Error: /Stage[main]/Geoip::Data::Maxmind/Package[geoipupdate]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install geoipupdate' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package geoipupdate

[ . . . ]

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install puppetdb-terminus' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package puppetdb-terminus
Error: /Stage[main]/Packages::Puppetdb_terminus/Package[puppetdb-terminus]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install puppetdb-terminus' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package puppetdb-terminus

[ . . . ]

Event Timeline

role::puppetmaster::standalone is the correct role to use for a project/host local puppetmaster. role::puppet::self is broken in many ways and only left around for backwards compat with legacy VMs. See https://wikitech.wikimedia.org/wiki/Help:Standalone_puppetmaster

MaxSem renamed this task from role::puppet::self: Unable to locate package geoipupdate to role::puppetmaster::standalone: Unable to locate package geoipupdate.Jul 28 2017, 12:35 AM
MaxSem updated the task description. (Show Details)

Still fails, with even more errors (I tried on a fresh VM).

Still fails, with even more errors (I tried on a fresh VM).

Is this a jessie|stretch base image? For "reasons" only debian boxes can be puppetmasters.

bd808 renamed this task from role::puppetmaster::standalone: Unable to locate package geoipupdate to role::puppetmaster::standalone on stretch: Unable to locate package geoipupdate.Jul 28 2017, 1:13 AM

Discussed a bit on irc with @faidon. The recommended short term fix is to use jessie instead of stretch.

The next tier of fix is for us to fix ops/puppet by either:

  • Adding the Debian contrib repo for Cloud VPS stretch instances to get geoipupdate from there
  • Changing the puppetmaster role/modules so that geoipupdate is not provisioned when not needed (e.g. anywhere outside of WMF prod puppetmasters)
bd808 triaged this task as Medium priority.Jul 28 2017, 11:11 PM

Looks like this got fixed at some stage, suggest closing:

krenair@deployment-puppetmaster03:~$ apt-cache policy geoipupdate
geoipupdate:
  Installed: 2.5.0-1~bpo9+1
  Candidate: 2.5.0-1~bpo9+1
  Version table:
 *** 2.5.0-1~bpo9+1 100
        100 http://mirrors.wikimedia.org/debian stretch-backports/contrib amd64 Packages
        100 /var/lib/dpkg/status

Marking as invalid due to resolution by indirect means.