Obsolete:Puppet coding/Todo

From Wikitech
This page was last updated in 2014 and may be outdated. Please update it if you can.

Ongoing Puppet work

This page will keep track of current and future refactors in our puppet codebase.

CI and Testing

The page tracking progress on our CI infrastructure is here.

Manifest file: generic-definitions.pp

I've exhaustively listed all the classes and defines present in this manifest to make sure we don't miss anything. I don't mean to imply that there will be anything like a 1:1 relationship between present and future classes; only that these are all the bits that must be moved, purged, or replaced. andrew (talk) 22:31, 1 July 2013 (UTC)

apache (done)

  • define apache_site($name, $prefix="", $ensure="link")
  • define apache_module($name)
  • define apache_confd($install="false", $enable="true", $ensure="present")

Remove in favor of the new apache module.

Team: Ori Livneh, Alexandros Kosiaris, Giuseppe Lavagetto


  • define lighttpd_config($install="false")

Create a new simple lighttpd module or, better yet, replace all current uses with Apache NGINX.

nginx (Done)

  • define nginx_site($install=false, $template="", $enable=true)

Move to existing nginx module

Team: Ryan Lane, Ariel

network-interface (Done)

  • define interface_ip($interface, $address, $prefixlen="32")
  • define interface_manual($interface, $family="inet")
  • define interface_up_command($interface, $command)
  • define interface_setting($interface, $setting, $value)
  • define interface_tun6to4($remove=undef)
  • define interface_tagged($base_interface, $vlan_id, $address=undef, $netmask=undef, $family="inet", $method="static", $up=undef, $down=undef, $remove=undef)
  • define interface_aggregate_member($master)
  • define interface_aggregate($orig_interface=undef, $members=[], $lacp_rate="fast", $hash_policy="layer2+3")
  • define interface_add_ip6_mapped($interface=undef, $ipv4_address=undef)
  • define interface_offload($interface="eth0", $setting, $value)

This is a subject that I know nothing about, but these things seem related!


  • define system_role($description, $ensure=present)
  • define systemuser($name, $home=undef, $managehome=true, $shell="/bin/false", $groups=undef, $default_group=$name, $ensure=present)
  • class generic::wikidev-umask

(Possible 'users' module for those last two?)

  • define upstart_job($install="false", $start="false")
  • define generic::debconf::set($value)
  • class generic::sysfs::enable-rps
  • class generic::locales::international

There are lots of definitions and classes that are too small or simple to warrant their own module. I propose that they be dumped into a module called 'wmf-defines.' I don't care about the name, so bikeshedding is welcome!

How about generic? :) As that's what's used now. Only drawback to that name that I can see is that it's not very clear that it's not generic beyond WMF. -- mark (talk)


  • class generic::packages::ant18
  • class base::mwclient

Ideally almost nothing will land here as most packages will fit into other modules. We're going to need this as a grab-bag though.

Obviously these are not actually WMF packages, so what should this module be called?

git-client (done)

  • define git::clone
  • define git::init($directory)

Moved into new, tiny 'git' module


class generic::gluster-client class generic::gluster-server

Create or import a new module

Copy-paste solution here: https://gerrit.wikimedia.org/r/#/c/91884/

Team: Ryan Lane

apparmor (done)

  • class generic::apparmor::service

This is only used by mysql.pp which is, hopefully, deprecated in favor of the mysql module. However, the mysql module makes no mention of app-armor. Not sure what's going on here.

Manifest file: base.pp

moved into base module!

Manifests status

  1. puppetmaster.pp: Alex is working on a new Puppet architecture, work includes moving it into a module and rearranging it
  2. misc/install-server.pp: Alex has a refactor in progress
  3. dns.pp: Faidon is working on new AuthDNS infrastructure in a module, will move recursor DNS into a module as well
  4. ganglia.pp: Mark already created modules/ganglia_new, transition needs to finish. Alex working on this.
  5. nagios.pp: Alex working on this.
  6. nrpe.pp, nagios.pp, misc/icinga.pp: Alex to modularize those
  7. backups.pp: Alex is working on a new backup infrastructure, perhaps this will become obsolete as part of that work
  8. geoip.pp: https://gerrit.wikimedia.org/r/#/c/53714/5 needs restoring and merging
  9. iptables.pp, misc/firewall.pp: these need to be completely ripped out and replaced with (to be merged) https://gerrit.wikimedia.org/r/#/c/61744/
  10. search.pp: this can likely wait until the deployment of the new search infrastructure
  11. mysql.pp: Much of this is about to be moved to mysql_wmf https://gerrit.wikimedia.org/r/#/c/88666/ -- the fate of the remaining classes remains in flux
  12. imagescaler.pp:matanya is converting into a module.
  13. misc/irc.pp: mutante started converting into a module (https://gerrit.wikimedia.org/r/#/c/94407/)
  14. misc/wikistats.pp mutante started converting into a module (https://gerrit.wikimedia.org/r/#/c/94409/)
  15. misc/bugzilla.pp mutante started converting into a module (https://gerrit.wikimedia.org/r/#/c/94075/)
  16. misc/download.pp matanya converted into a module (https://gerrit.wikimedia.org/r/#/c/95460/) (but merge in role changes from https://gerrit.wikimedia.org/r/#/c/94408/)
  17. misc/planet.pp mutante is working on it: (https://gerrit.wikimedia.org/r/#/c/108674/)

Existing modules that need work (done)

  1. Mongodb depends on 'apt' but is expecting puppet labs apt, totally different from our apt. Ori is going to tear out/fix these dependencies.