Ori.livneh has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/62199


Change subject: Document *all* manifests and managed files
......................................................................

Document *all* manifests and managed files

This change adds RDoc documentation to all Puppet manifests and a comment
header to all other files managed by Puppet.

Also changes the extra Vagrantfile file name to 'Vagrantfile-extra' (which
exists by convention and by dint of being mentioned in .gitignore) and adds
'puppet/manifests/extra.pp' for housing Puppet configs of optional Puppet
modules.

Also included are various small lint-like fixes to Puppet code:

  * 'default' for all case statements.
  * 'ensure' as first parameter.

Change-Id: I15cf7a55894fda70cda5866872442e3946425acb
---
M .gitignore
M LocalSettings.php
M README
M Vagrantfile
A puppet/manifests/extra.pp
M puppet/manifests/site.pp
M puppet/modules/apache/manifests/init.pp
M puppet/modules/apache/manifests/mod.pp
M puppet/modules/apache/manifests/site.pp
M puppet/modules/browsertests/manifests/init.pp
M puppet/modules/browsertests/templates/mediawiki-url.sh.erb
M puppet/modules/browsertests/templates/secret.yml.erb
M puppet/modules/git/manifests/clone.pp
M puppet/modules/git/manifests/init.pp
D puppet/modules/mediawiki/files/color.sh
D puppet/modules/mediawiki/files/fetch-mediawiki.sh
M puppet/modules/mediawiki/files/phpsh.sh
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/manifests/php.pp
M puppet/modules/mediawiki/manifests/phpsh.pp
M puppet/modules/mediawiki/manifests/user.pp
M puppet/modules/mediawiki/templates/mediawiki-apache-site.erb
M puppet/modules/mediawiki/templates/phpsh-config.erb
M puppet/modules/mediawiki/templates/rc.php.erb
M puppet/modules/memcached/manifests/init.pp
M puppet/modules/memcached/templates/memcached.conf.erb
M puppet/modules/misc/files/60-mediawiki-vagrant
M puppet/modules/misc/files/bash_aliases
M puppet/modules/misc/files/check-guest-additions.sh
M puppet/modules/misc/files/color.sh
M puppet/modules/misc/files/update-guest-additions
M puppet/modules/misc/manifests/init.pp
M puppet/modules/misc/manifests/virtualbox.pp
M puppet/modules/misc/manifests/wikimedia.pp
M puppet/modules/misc/templates/wikimedia.list.erb
M puppet/modules/mysql/manifests/init.pp
M puppet/modules/mysql/templates/my.cnf.erb
M puppet/modules/user_metrics/README
M puppet/modules/user_metrics/manifests/init.pp
M puppet/modules/user_metrics/templates/settings.py.erb
M puppet/modules/user_metrics/templates/virtual_host.erb
41 files changed, 428 insertions(+), 101 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/99/62199/1

diff --git a/.gitignore b/.gitignore
index ae0013f..ef4f9e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
 .vagrant
-/extra-vagrant-settings.rb
+/Vagrantfile-extra
 /LocalSettings.php
 tags
 /mediawiki/
diff --git a/LocalSettings.php b/LocalSettings.php
index 3623bce..35cd755 100644
--- a/LocalSettings.php
+++ b/LocalSettings.php
@@ -1,4 +1,13 @@
 <?php
+/**
+ * MediaWiki configuration
+ *
+ * To customize your MediaWiki instance, you may change the content of this
+ * file. See settings/README for an alternate way of managing small snippets of
+ * configuration data, such as extension invocations.
+ *
+ * This file is part of Mediawiki-Vagrant.
+ */
 
 // Enable error reporting
 error_reporting( -1 );
diff --git a/README b/README
index ed6cbf4..501f01e 100644
--- a/README
+++ b/README
@@ -71,3 +71,9 @@
 
  * http://www.mediawiki.org/wiki/Mediawiki-Vagrant#Troubleshooting
  * irc://chat.freenode.net/#mediawiki
+
+Please report any bugs on Wikimedia's Bugzilla:
+https://bugzilla.wikimedia.org/enter_bug.cgi?product=Tools&component=Vagrant
+
+Patches and contributions are welcome!
+See <http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker> for 
details.
diff --git a/Vagrantfile b/Vagrantfile
index 80642d6..113dba4 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -1,5 +1,25 @@
 # -*- mode: ruby -*-
 # vi: set ft=ruby :
+#
+# Vagrantfile for Mediawiki-Vagrant
+# ---------------------------------
+# http://www.mediawiki.org/wiki/Mediawiki-Vagrant
+#
+# This file contains the Vagrant configurations for provisioning a MediaWiki
+# development instance. Vagrant file uses Ruby as a configuration language.
+#
+# If you would like to customize the configuration of your Virtual Machine,
+# rather than override the values defined in this file, simply create a file
+# called 'Vagrantfile-extra' in this folder and it will be automatically
+# loaded. In case of conflict, values in the 'extra' file will superceded
+# any values in this file. 'Vagrantfile-extra' is ignored by git.
+#
+# Please report bugs in this file on Wikimedia's Bugzilla:
+# https://bugzilla.wikimedia.org/enter_bug.cgi?product=Tools&component=Vagrant
+#
+# Patches and contributions are welcome!
+# http://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker
+#
 require 'rbconfig'
 
 # Check if we're running on Windows.
@@ -87,7 +107,7 @@
 end
 
 begin
-    require_relative 'extra-vagrant-settings.rb'
+    require_relative 'Vagrantfile-extra'
 rescue LoadError
     # No local Vagrantfile overrides.
 end
diff --git a/puppet/manifests/extra.pp b/puppet/manifests/extra.pp
new file mode 100644
index 0000000..c4f7a82
--- /dev/null
+++ b/puppet/manifests/extra.pp
@@ -0,0 +1,11 @@
+# == Puppet manifest for optional modules
+#
+# Uncomment lines below to enable Puppet modules that ship with Vagrant
+# but are not enabled by default.
+#
+
+# Selenium browser tests for MediaWiki
+# class { 'browsertests': }
+
+# User metrics API
+# class { 'user_metrics': }
diff --git a/puppet/manifests/site.pp b/puppet/manifests/site.pp
index 8f1017c..6890e7b 100644
--- a/puppet/manifests/site.pp
+++ b/puppet/manifests/site.pp
@@ -1,12 +1,26 @@
+# == Puppet site manifest
+#
+# This manifest is the main entrypoint for the Puppet provisioner. It
+# sets some default values for Puppet resource types and specifies which
+# Puppet modules should be enabled.
+#
+
+# Declares a default search path for executables, allowing the path to
+# be omitted from individual resources. Also configures Puppet to log
+# the command's output if it was unsuccessful.
 Exec {
        path      => ['/bin', '/usr/bin', '/usr/sbin/', '/usr/local/bin'],
        logoutput => on_failure,
 }
 
+# Ensure that apt-get update has ran in the last 24 hours before
+# installing any packages.
 Package {
        require => Exec['update package index'],
 }
 
+# Declare default uid / gid and permissions for file resources, and
+# tells Puppet not to back up configuration files by default.
 File {
        backup => false,
        owner  => 'root',
@@ -14,18 +28,22 @@
        mode   => '0644',
 }
 
+# Emit a notice indicating whether or not the host's VirtualBox version
+# was detected. See ../../Vagrantfile for the version detection code.
 if ( $::virtualbox_version ) {
        notice("Detected VirtualBox version ${::virtualbox_version}")
 } else {
        warning('Could not determine VirtualBox version.')
 }
 
+# Run 'apt-get update' if the package index has not been updated in the
+# last 24 hours.
 exec { 'update package index':
-       # run 'apt-get update', but no more than once every 24h
        command => 'apt-get update',
        unless  => 'bash -c \'(( $(date +%s) - $(stat -c %Y 
/var/lib/apt/periodic/update-success-stamp) < 86400 ))\''
 }
 
+# Configures a 'puppet' user group, required by Puppet.
 group { 'puppet':
        ensure => present,
 }
@@ -35,11 +53,5 @@
 class { 'misc': }
 class { 'mediawiki': }
 
-# Optional classes
-# Uncomment a line and run 'vagrant provision' to enable a class.
-
-# Selenium browser tests for MediaWiki
-# class { 'browsertests': }
-
-# User metrics API
-# class { 'user_metrics': }
+# Load any optional modules that have been enabled.
+import 'extra.pp'
diff --git a/puppet/modules/apache/manifests/init.pp 
b/puppet/modules/apache/manifests/init.pp
index 2de4362..36e8f45 100644
--- a/puppet/modules/apache/manifests/init.pp
+++ b/puppet/modules/apache/manifests/init.pp
@@ -1,3 +1,7 @@
+# == Class: apache
+#
+# Configures Apache HTTP Server
+#
 class apache {
        package { ['apache2', 'libapache2-mod-php5']:
                ensure  => present,
@@ -9,6 +13,8 @@
                notify  => Service['apache2'],
        }
 
+       # Set EnableSendfile to 'Off' to work around a bug with Vagrant.
+       # See <https://github.com/mitchellh/vagrant/issues/351>.
        file { '/etc/apache2/conf.d/disable-sendfile':
                source  => 'puppet:///modules/apache/disable-sendfile',
                require => Package['apache2'],
diff --git a/puppet/modules/apache/manifests/mod.pp 
b/puppet/modules/apache/manifests/mod.pp
index 7c12a1e..4f9dbf6 100644
--- a/puppet/modules/apache/manifests/mod.pp
+++ b/puppet/modules/apache/manifests/mod.pp
@@ -1,7 +1,24 @@
-# Resource type for Apache modules.
+# == Define: apache::mod
+#
+# Custom resource for Apache modules.
+#
+# === Parameters
+#
+# [*ensure*]
+#   If 'present' or undefined, module will be enabled. If 'absent', module will
+#   be disabled.
+#
+# [*mod*]
+#   Module name
+#
+# === Examples
+#
+#  # enable mod_alias
+#  apache::mod { 'alias': }
+#
 define apache::mod(
+       $ensure = present,
        $mod    = $title,
-       $ensure = present
 ) {
        include apache
 
@@ -20,5 +37,8 @@
                                notify  => Service['apache2'],
                        }
                }
+               default: {
+                       fail("'ensure' may be 'present' or 'absent' (got: 
'${ensure}').")
+               }
        }
 }
diff --git a/puppet/modules/apache/manifests/site.pp 
b/puppet/modules/apache/manifests/site.pp
index 13bf90d..28b7705 100644
--- a/puppet/modules/apache/manifests/site.pp
+++ b/puppet/modules/apache/manifests/site.pp
@@ -1,8 +1,32 @@
-# Apache site resource type.
+# == Define: apache::site
+#
+# Manages Apache site configurations.
+#
+# === Parameters
+#
+# [*ensure*]
+#   If 'present', site will be enabled; if 'absent', disabled. The
+#   default is 'present'.
+#
+# [*site*]
+#   Name of site. The resource title will be used if this is
+#   unspecified.
+#
+# [*content*]
+#   If defined, will be used as the content of the site configuration
+#   file. Undefined by default.
+#
+# === Examples
+#
+#  apache::site { 'wiki':
+#    ensure  => present,
+#    content => template('mediawiki/mediawiki-apache-site.erb'),
+#  }
+#
 define apache::site(
-       $site    = $title,
        $ensure  = 'present',
-       $content = undef
+       $site    = $title,
+       $content = undef,
 ) {
 
        include apache
@@ -32,5 +56,8 @@
                                onlyif  => "a2dissite <<<'' | head -1 | cut -c 
19- | grep -w ${site}",
                        }
                }
+               default: {
+                       fail("'ensure' may be 'present' or 'absent' (got: 
'${ensure}').")
+               }
        }
 }
diff --git a/puppet/modules/browsertests/manifests/init.pp 
b/puppet/modules/browsertests/manifests/init.pp
index b01f0a3..49fa6db 100644
--- a/puppet/modules/browsertests/manifests/init.pp
+++ b/puppet/modules/browsertests/manifests/init.pp
@@ -5,6 +5,10 @@
 # session you use to connect to your Vagrant instance. You can do so by
 # running 'vagrant ssh -- -X'.
 #
+# This module is not enabled by default. To enable it, uncomment the
+# reference to this module in puppet/manifests/extra.pp and run 'vagrant
+# provision'.
+#
 # === Parameters
 #
 # [*selenium_password*]
@@ -15,6 +19,15 @@
 #
 # [*install_location*]
 #   The browsertests repository will be cloned to this local path.
+#
+# === Examples
+#
+#  Configure the browser tests to run against Wikimedia's beta cluster
+#  (see <http://www.mediawiki.org/wiki/Beta_cluster>):
+#
+#    class { 'browsertests':
+#        mediawiki_url    => 
'http://deployment.wikimedia.beta.wmflabs.org/wiki/',
+#    }
 #
 class browsertests(
        $selenium_password = 'vagrant',
@@ -34,7 +47,7 @@
        # Sets MEDIAWIKI_URL environment variable for all users.
        file { '/etc/profile.d/mediawiki-url.sh':
                content => template('browsertests/mediawiki-url.sh.erb'),
-               mode   => '0755',
+               mode    => '0755',
        }
 
        # Store the password for the 'Selenium_user' MediaWiki account.
diff --git a/puppet/modules/browsertests/templates/mediawiki-url.sh.erb 
b/puppet/modules/browsertests/templates/mediawiki-url.sh.erb
index 3c75dad..d8a48ec 100755
--- a/puppet/modules/browsertests/templates/mediawiki-url.sh.erb
+++ b/puppet/modules/browsertests/templates/mediawiki-url.sh.erb
@@ -1,2 +1,7 @@
 #!/bin/sh
+# Set 'MEDIAWIKI_URL' environment variable, used by the Selenium browser
+# tests to determine which MediaWiki instance to run against.
+#
+# This file is managed by Puppet.
+#
 export MEDIAWIKI_URL="<%= @mediawiki_url %>"
diff --git a/puppet/modules/browsertests/templates/secret.yml.erb 
b/puppet/modules/browsertests/templates/secret.yml.erb
index 1bb0821..35b56a6 100644
--- a/puppet/modules/browsertests/templates/secret.yml.erb
+++ b/puppet/modules/browsertests/templates/secret.yml.erb
@@ -1 +1,4 @@
+# Credentials for MediaWiki account used by the Selenium browser tests.
+# This file is managed by Puppet.
+#
 mediawiki_password: <%= @selenium_password %>
diff --git a/puppet/modules/git/manifests/clone.pp 
b/puppet/modules/git/manifests/clone.pp
index f313389..ca2adc1 100644
--- a/puppet/modules/git/manifests/clone.pp
+++ b/puppet/modules/git/manifests/clone.pp
@@ -1,3 +1,25 @@
+# == Define: git::clone
+#
+# Custom resource for cloning a remote git repository.
+#
+# === Parameters
+#
+# [*directory*]
+#   Name for target directory for repository content. It should not
+#   refer to an existing directory.
+#
+# [*remote*]
+#   Remote URL for the repository. If unspecified, the resource title
+#   will be interpolated into $git::urlformat.
+#
+# === Examples
+#
+#  Clone VisualEditor to MediaWiki extension path:
+#
+#  git::clone { 'extensions/VisualEditor':
+#      directory => '/vagrant/mediawiki/extensions/VisualEditor',
+#  }
+#
 define git::clone($directory, $remote=undef) {
        include git
 
diff --git a/puppet/modules/git/manifests/init.pp 
b/puppet/modules/git/manifests/init.pp
index 81e02a1..d846175 100644
--- a/puppet/modules/git/manifests/init.pp
+++ b/puppet/modules/git/manifests/init.pp
@@ -1,18 +1,26 @@
-class git {
-
-       # When a git::clone resource does not declare a 'remote' parameter,
-       # a remote URL is constructed by interpolating the title of the
-       # resource into the format string below.
-       #
-       # This provides some syntactic sugar for cloning Gerrit
-       # repositories. e.g.:
-       #
-       # git::clone { 'mediawiki/extensions/Math':
-       #     directory => '/vagrant/mediawiki/extensions/Math',
-       # }
-       #
-       $urlformat = 'https://gerrit.wikimedia.org/r/p/%s.git'
-
+# == Class: git
+#
+# Base class for using Puppet to clone and manage Git repositories.
+#
+# === Parameters
+#
+# [*urlformat*]
+#   When a 'git::clone'' resource does not define a 'remote' parameter,
+#   the remote repository URL is constructed by interpolating the title
+#   of the resource into the format string below. This provides a
+#   convenient syntactic sugar for cloning Gerrit repositories.
+#   Default: 'https://gerrit.wikimedia.org/r/p/%s.git'.
+#
+# === Examples
+#
+#  # Use GitHub as the default remote for repositories.
+#  class { 'git':
+#    urlformat => 'https://github.com/%s.git',
+#  }
+#
+class git(
+       $urlformat = 'https://gerrit.wikimedia.org/r/p/%s.git',
+) {
        exec { 'git-core ppa':
                command => 'add-apt-repository --yes ppa:git-core/ppa',
                notify  => Exec['apt-get update'],
diff --git a/puppet/modules/mediawiki/files/color.sh 
b/puppet/modules/mediawiki/files/color.sh
deleted file mode 100755
index d6520b3..0000000
--- a/puppet/modules/mediawiki/files/color.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-export force_color_prompt="yes"
diff --git a/puppet/modules/mediawiki/files/fetch-mediawiki.sh 
b/puppet/modules/mediawiki/files/fetch-mediawiki.sh
deleted file mode 100755
index 28e4f09..0000000
--- a/puppet/modules/mediawiki/files/fetch-mediawiki.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-if [ ! -f "/vagrant/mediawiki/index.php" ]; then
-       wget -O /tmp/mediawiki-latest.zip 
http://integration.mediawiki.org/nightly/mediawiki/core/mediawiki-latest.zip
-       mediawiki=$(unzip -l mediawiki-latest.zip | grep -Eo 'mediawiki-\w{7}' 
| head -1)
-       unzip /tmp/master.zip -d/tmp
-       rm -f "/tmp/${mediawiki}/.gitignore"
-       mv "/tmp/${mediawiki}/*" "/vagrant/mediawiki"
-fi
diff --git a/puppet/modules/mediawiki/files/phpsh.sh 
b/puppet/modules/mediawiki/files/phpsh.sh
index cb15d1b..ede53f2 100644
--- a/puppet/modules/mediawiki/files/phpsh.sh
+++ b/puppet/modules/mediawiki/files/phpsh.sh
@@ -1,3 +1,9 @@
+# Alias for `phpsh` that ensures it is invoked with the MediaWiki
+# codebase as its working directory.
+#
+# This file is managed by Puppet.
+#
+
 # Ensure that we're in an interactive bash session.
 [ -z "$BASH_VERSION" -o -z "$PS1" ] && return
 phpsh () {
diff --git a/puppet/modules/mediawiki/manifests/init.pp 
b/puppet/modules/mediawiki/manifests/init.pp
index 3eb2d1d..3b40f11 100644
--- a/puppet/modules/mediawiki/manifests/init.pp
+++ b/puppet/modules/mediawiki/manifests/init.pp
@@ -1,4 +1,39 @@
-# Install MediaWiki using MySQL and Apache
+# == Class: mediawiki
+#
+# Provision a MediaWiki instance powered by MySQL, served by Apache, and
+# customized for development work.
+#
+# === Parameters
+
+# [*wiki*]
+#   Wiki name (default: 'devwiki').
+#
+# [*admin*]
+#   User name for the initial admin account (default: 'admin').
+#
+# [*pass*]
+#   Initial password for admin account (default: 'vagrant').
+#
+# [*dbname*]
+#   Logical MySQL database name.
+#
+# [*dbuser*]
+#   MySQL user to use to connect to the database (default: 'root').
+#
+# [*dbpass*]
+#   Password for MySQL account (default: 'vagrant').
+#
+# [*server*]
+#   Full base URL of host (default: 'http://127.0.0.1:8080').
+#
+# === Examples
+#
+#  class { 'mediawiki':
+#       wiki  => 'mobiledevwiki',
+#       admin => 'mobiledev',
+#       pass  => 'secret',
+#  }
+#
 class mediawiki(
        $wiki   = 'devwiki',
        $admin  = 'admin',
@@ -8,7 +43,6 @@
        $dbpass = 'vagrant',
        $server = 'http://127.0.0.1:8080',
 ) {
-
        class { 'php': }
        class { 'phpsh': }
        class { 'mysql':
@@ -92,7 +126,7 @@
                source  => 'puppet:///modules/mediawiki/favicon.ico',
        }
 
-       exec { 'configure-phpunit':
+       exec { 'configure phpunit':
                creates => '/usr/bin/phpunit',
                command => 
'/vagrant/mediawiki/tests/phpunit/install-phpunit.sh',
                require => Exec['mediawiki setup'],
diff --git a/puppet/modules/mediawiki/manifests/php.pp 
b/puppet/modules/mediawiki/manifests/php.pp
index 7671b35..3283186 100644
--- a/puppet/modules/mediawiki/manifests/php.pp
+++ b/puppet/modules/mediawiki/manifests/php.pp
@@ -1,4 +1,7 @@
-# PHP dependencies for MediaWiki
+# == Class: mediawiki::php
+#
+# Configures PHP and PHP-related dependencies for MediaWiki.
+#
 class mediawiki::php {
        include apache
 
diff --git a/puppet/modules/mediawiki/manifests/phpsh.pp 
b/puppet/modules/mediawiki/manifests/phpsh.pp
index 3b39db4..e7dffde 100644
--- a/puppet/modules/mediawiki/manifests/phpsh.pp
+++ b/puppet/modules/mediawiki/manifests/phpsh.pp
@@ -1,6 +1,9 @@
-# Provides interactive PHP shell (REPL) with MediaWiki integration
+# == Class: mediawiki::phpsh
+#
+# Installs phpsh, an interactive PHP shell, and configures it for use
+# with the MediaWiki codebase.
+#
 class mediawiki::phpsh {
-
        package { [ 'python-pip', 'exuberant-ctags' ]:
                ensure => latest,
        }
@@ -8,7 +11,6 @@
        exec { 'pip install phpsh':
                creates => '/usr/local/bin/phpsh',
                command => 'pip install 
https://github.com/facebook/phpsh/tarball/master',
-               onlyif  => 'ping -c1 -w0.5 -q github.com',  # only if GitHub is 
reachable
                require => Package['php5', 'python-pip'],
        }
 
@@ -37,5 +39,4 @@
                command => 'ctags --languages=php --recurse -f 
/vagrant/mediawiki/tags /vagrant/mediawiki',
                creates => '/vagrant/mediawiki/tags',
        }
-
 }
diff --git a/puppet/modules/mediawiki/manifests/user.pp 
b/puppet/modules/mediawiki/manifests/user.pp
index b22f803..c671169 100644
--- a/puppet/modules/mediawiki/manifests/user.pp
+++ b/puppet/modules/mediawiki/manifests/user.pp
@@ -1,3 +1,27 @@
+# == Define: mediawiki::user
+#
+# Uses MediaWiki's maintenance scripts to create a MediaWiki account.
+#
+# === Parameters
+#
+# [*username*]
+#   User name of account to create. Defaults to the resource title.
+#
+# [*password*]
+#   Password for the new account.
+#
+# [*force*]
+#   Boolean. If true, pass '--force' arg to createAndPromote.php, which
+#   instructs it to clobber any existing password.
+#
+# === Examples
+#
+#  Create a MediaWiki account for user 'sumana':
+#
+#  mediawiki::user { 'sumana':
+#     password => 'secretpassword',
+#  }
+#
 define mediawiki::user(
        $password,
        $force     = false,
diff --git a/puppet/modules/mediawiki/templates/mediawiki-apache-site.erb 
b/puppet/modules/mediawiki/templates/mediawiki-apache-site.erb
index c6c78bc..f6c08b1 100644
--- a/puppet/modules/mediawiki/templates/mediawiki-apache-site.erb
+++ b/puppet/modules/mediawiki/templates/mediawiki-apache-site.erb
@@ -1,5 +1,8 @@
 # vim: filetype=apache sts=4 sw=4 autoindent
-
+#
+# Apache site configuration for MediaWiki
+# This file is managed by Puppet.
+#
 <VirtualHost *>
     ServerName vagrant
     ServerAdmin http://www.mediawiki.org/wiki/Vagrant
@@ -28,6 +31,4 @@
 
     ErrorLog "/vagrant/logs/apache-error.log"
     LogLevel error
-
-    ServerSignature Off
 </VirtualHost>
diff --git a/puppet/modules/mediawiki/templates/phpsh-config.erb 
b/puppet/modules/mediawiki/templates/phpsh-config.erb
index 6b18389..fda8b28 100644
--- a/puppet/modules/mediawiki/templates/phpsh-config.erb
+++ b/puppet/modules/mediawiki/templates/phpsh-config.erb
@@ -1,7 +1,9 @@
-# See https://github.com/facebook/phpsh/blob/master/src/config.sample
-
+# Configuration file for phpsh.
+# See <https://github.com/facebook/phpsh/blob/master/src/config.sample>.
+# This file is managed by Puppet.
+#
 [General]
 UndefinedFunctionCheck: yes
 
 [Debugging]
-Xdebug: <%= `php-config --extension-dir` %=>/xdebug.so
+Xdebug: <%= `php-config --extension-dir`.strip %>/xdebug.so
diff --git a/puppet/modules/mediawiki/templates/rc.php.erb 
b/puppet/modules/mediawiki/templates/rc.php.erb
index b7648aa..141a3d2 100644
--- a/puppet/modules/mediawiki/templates/rc.php.erb
+++ b/puppet/modules/mediawiki/templates/rc.php.erb
@@ -1,5 +1,13 @@
 <?php
 # vim: ft=php
+#
+# Configure phpsh codebase modes
+#
+#   'phpsh' (no args) -> MediaWiki codebase
+#   'phpsh -c none'   -> Vanilla PHP
+#
+# This file is managed by Puppet.
+#
 switch ($___phpsh___codebase_mode) {
 case '':
        // MediaWiki codebase mode
diff --git a/puppet/modules/memcached/manifests/init.pp 
b/puppet/modules/memcached/manifests/init.pp
index 8c0cc04..078247a 100644
--- a/puppet/modules/memcached/manifests/init.pp
+++ b/puppet/modules/memcached/manifests/init.pp
@@ -1,7 +1,27 @@
-# Installs memcached server and libmemcache6 client library.
+# == Class: memcached
+#
+# Configures a memcached instance.
+#
+# === Parameters
+#
+# [*size_mb*]
+#   Size of memcached store, in megabytes (default: 200).
+#
+# [*port*]
+#   Memcached server will listen on this port (default: 11211).
+#
+# [*iface*]
+#   Interface memcached server will bind to (default: all interfaces).
+#
+# === Examples
+#
+#  class { 'memcached':
+#      size_mb => 500,
+#  }
+#
 class memcached(
-       $size_mb = '200',
-       $port    = '11211',
+       $size_mb = 200,
+       $port    = 11211,
        $iface   = '0.0.0.0'
 ) {
 
diff --git a/puppet/modules/memcached/templates/memcached.conf.erb 
b/puppet/modules/memcached/templates/memcached.conf.erb
index 769f536..3994efd 100644
--- a/puppet/modules/memcached/templates/memcached.conf.erb
+++ b/puppet/modules/memcached/templates/memcached.conf.erb
@@ -1,4 +1,6 @@
-# memcached default config file
+# Configuration file for memcached.
+# This file is managed by Puppet.
+#
 -d
 -m <%= @size_mb %>
 -p <%= @port %>
diff --git a/puppet/modules/misc/files/60-mediawiki-vagrant 
b/puppet/modules/misc/files/60-mediawiki-vagrant
index b2c4327..5568f8e 100755
--- a/puppet/modules/misc/files/60-mediawiki-vagrant
+++ b/puppet/modules/misc/files/60-mediawiki-vagrant
@@ -1,4 +1,8 @@
 #!/bin/sh
+#
+# MOTD banner, shown when user connects via 'vagrant ssh'.
+# This file is managed by Puppet.
+#
 toilet --gay -w 100 -f ascii12 MediaWiki
 printf " * MediaWiki is located at \033[33;1m/vagrant/mediawiki\033[0m.\n"
 printf " * To interactively evaluate PHP and MediaWiki code, run 
'\033[33mphpsh\033[0m'.\n"
diff --git a/puppet/modules/misc/files/bash_aliases 
b/puppet/modules/misc/files/bash_aliases
index 3f212ec..56c34c1 100755
--- a/puppet/modules/misc/files/bash_aliases
+++ b/puppet/modules/misc/files/bash_aliases
@@ -1,2 +1,5 @@
+# Bash aliases
+# This file is managed by Puppet.
+#
 alias ..="cd .."
 alias ack=ack-grep
diff --git a/puppet/modules/misc/files/check-guest-additions.sh 
b/puppet/modules/misc/files/check-guest-additions.sh
index b660eb2..b46a4d8 100755
--- a/puppet/modules/misc/files/check-guest-additions.sh
+++ b/puppet/modules/misc/files/check-guest-additions.sh
@@ -1,5 +1,10 @@
 #!/usr/bin/env bash
-
+# Script for prompting the user to upgrade the version of VirtualBox Guest
+# Additions if the installed version lags behind the version of VirtualBox
+# running on the host.
+#
+# This file is managed by Puppet.
+#
 [ -z "$BASH_VERSION" -o -z "$PS1" ] && return
 
 VIRTUALBOX_VERSION="$(</etc/virtualbox-version)"
diff --git a/puppet/modules/misc/files/color.sh 
b/puppet/modules/misc/files/color.sh
index d6520b3..043f714 100755
--- a/puppet/modules/misc/files/color.sh
+++ b/puppet/modules/misc/files/color.sh
@@ -1,2 +1,5 @@
 #!/bin/sh
+# Instructs Bash to enable color for the shell prompt (PS1).
+# This file is managed by Puppet.
+#
 export force_color_prompt="yes"
diff --git a/puppet/modules/misc/files/update-guest-additions 
b/puppet/modules/misc/files/update-guest-additions
index 7ce7cd2..114cdc3 100755
--- a/puppet/modules/misc/files/update-guest-additions
+++ b/puppet/modules/misc/files/update-guest-additions
@@ -1,9 +1,12 @@
 #!/usr/bin/env bash
 #
 # VirtualBox Guest Additions Upgrade Helper
-# -----------------------------------------
-# Reads host's VirtualBox version from /etc/virtualbox-version,
-# which is generated by Puppet.
+#
+# Reads host's VirtualBox version from /etc/virtualbox-version, which is
+# generated by Puppet. Fetches appropriate version of Guest Additions ISO from
+# Oracle and installs it.
+#
+# This file is managed by Puppet.
 #
 
 warn () {
diff --git a/puppet/modules/misc/manifests/init.pp 
b/puppet/modules/misc/manifests/init.pp
index e4adedd..c024cd6 100644
--- a/puppet/modules/misc/manifests/init.pp
+++ b/puppet/modules/misc/manifests/init.pp
@@ -1,6 +1,10 @@
-# Provides small enhancements to the shell, such as color prompt and MOTD.
+# == Class: misc
+#
+# Provides various small enhancements to user experience: a color
+# prompt, a helpful MOTD banner, bash aliases, and some commonly-used
+# command-line tools, like 'ack' and 'curl'.
+#
 class misc {
-
        include misc::virtualbox
        include misc::wikimedia
 
diff --git a/puppet/modules/misc/manifests/virtualbox.pp 
b/puppet/modules/misc/manifests/virtualbox.pp
index 838b0bb..dd98681 100644
--- a/puppet/modules/misc/manifests/virtualbox.pp
+++ b/puppet/modules/misc/manifests/virtualbox.pp
@@ -1,7 +1,13 @@
-# Declare host's VirtualBox version in /etc/virtualbox-version and provide a
-# shell script for updating VirtualBox guest additions.
+# == Class: misc::virtualbox
+#
+# Provides a set of helpers for managing upgrades of VirtualBox Guest
+# Additions. This includes populating a file in /etc/virtualbox-version
+# with the version of VirtualBox running on the host and adding a script
+# that checks if the version of Guest Additions is outdated, prompting
+# the user to upgrade if it is. Upgrading is done using an
+# 'update-guest-additions' script which is also installed by this module.
+#
 class misc::virtualbox {
-
        # Upon starting an interactive shell, check guest additions version and
        # prompt the user to update if out-of-date.
        file { '/etc/profile.d/check-guest-additions.sh':
@@ -22,7 +28,7 @@
        if ( $::virtualbox_version =~ /[\d.]+/ ) {
                file { '/etc/virtualbox-version':
                        ensure  => present,
-                       content => inline_template("<%= 
scope.lookupvar('::virtualbox_version') %>\n"),
+                       content => $::virtualbox_version,
                        owner   => 'root',
                        group   => 'root',
                        mode    => '0444',
@@ -33,5 +39,4 @@
        package { [ 'build-essential', "linux-headers-${::kernelrelease}" ]:
                ensure => present,
        }
-
 }
diff --git a/puppet/modules/misc/manifests/wikimedia.pp 
b/puppet/modules/misc/manifests/wikimedia.pp
index ef8c093..933bf88 100644
--- a/puppet/modules/misc/manifests/wikimedia.pp
+++ b/puppet/modules/misc/manifests/wikimedia.pp
@@ -1,14 +1,24 @@
-class misc::wikimedia {
-
-       $keyurl = 
'http://apt.wikimedia.org/autoinstall/keyring/wikimedia-archive-keyring.gpg'
-
+# == Class: misc::wikimedia
+#
+# Configures apt to use Wikimedia's package repositories. Note that the
+# repository's key is fetched insecurely, making this module inadequate
+# for production use.
+#
+# === Parameters
+#
+# [*keyurl*]
+#   URL of public key for package repositories.
+#
+class misc::wikimedia(
+       $keyurl = 
'http://apt.wikimedia.org/autoinstall/keyring/wikimedia-archive-keyring.gpg',
+) {
        exec { 'apt-key add wikimedia key':
-               command => "curl $keyurl | gpg --import && gpg --export --armor 
Wikimedia | apt-key add -",
+               command => "curl ${keyurl} | gpg --import && gpg --export 
--armor Wikimedia | apt-key add -",
                unless  => 'apt-key list | grep -q Wikimedia',
        }
 
        file { '/etc/apt/sources.list.d/wikimedia.list':
-               content  => template('misc/wikimedia.list.erb'),
+               content => template('misc/wikimedia.list.erb'),
                notify  => Exec['apt-get update'],
                require => Exec['apt-key add wikimedia key'],
        }
diff --git a/puppet/modules/misc/templates/wikimedia.list.erb 
b/puppet/modules/misc/templates/wikimedia.list.erb
index d3e159f..36b4304 100644
--- a/puppet/modules/misc/templates/wikimedia.list.erb
+++ b/puppet/modules/misc/templates/wikimedia.list.erb
@@ -1,3 +1,5 @@
-# Wikimedia APT repository
+# Wikimedia apt package repository source file.
+# This file is managed by Puppet.
+#
 deb http://apt.wikimedia.org/wikimedia <%= 
scope.lookupvar('::lsbdistcodename') %>-wikimedia main universe
 deb-src http://apt.wikimedia.org/wikimedia <%= 
scope.lookupvar('::lsbdistcodename') %>-wikimedia main universe
diff --git a/puppet/modules/mysql/manifests/init.pp 
b/puppet/modules/mysql/manifests/init.pp
index 3e1012c..cd9778f 100644
--- a/puppet/modules/mysql/manifests/init.pp
+++ b/puppet/modules/mysql/manifests/init.pp
@@ -1,6 +1,27 @@
+# == Class: mysql
+#
+# Configures a local MySQL database server and a ~/.my.cnf file for the
+# Vagrant user.
+#
+# === Parameters
+#
+# [*password*]
+#   Password for the root MySQL account.
+#
+# [*dbname*]
+#   If defined, the 'mysql' command-line client will be configured to
+#   use this database by default (default: undefined).
+#
+# === Examples
+#
+#  class { 'mysql':
+#      password => 'r00tp455w0rd',
+#      dbname   => 'wiki',
+#  }
+#
 class mysql(
        $password = 'vagrant',
-       $dbname   = undef
+       $dbname   = undef,
 ) {
 
        package { 'mysql-server':
diff --git a/puppet/modules/mysql/templates/my.cnf.erb 
b/puppet/modules/mysql/templates/my.cnf.erb
index 0acccb3..9a382aa 100644
--- a/puppet/modules/mysql/templates/my.cnf.erb
+++ b/puppet/modules/mysql/templates/my.cnf.erb
@@ -1,3 +1,6 @@
+# MySQL client configuration.
+# This file is managed by Puppet.
+#
 [client]
 user = "root"
 password = "<%= @password %>"
diff --git a/puppet/modules/user_metrics/README 
b/puppet/modules/user_metrics/README
index ab989e8..d600aaf 100644
--- a/puppet/modules/user_metrics/README
+++ b/puppet/modules/user_metrics/README
@@ -1,21 +1,17 @@
+User Metrics API Puppet Module
+------------------------------
 
+This Puppet module configures a development instance of the User Metrics API.
+See <https://metrics.wikimedia.org> for more information about the User Metrics
+API.
 
-user_metrics puppet module for MediaWiki vagrant VM.
+This module is not enabled by default. To enable it, uncomment the following
+line in puppet/manifests/extra.pp:
 
-This uses the MediaWiki database set up by the MediaWiki
-module to host a user_metrics dev instance.  See:
-https://metrics.wikimedia.org for the production version.
+  # class { 'user_metrics': }
 
-Usage:
-
-In your site.pp:
-
-  class { 'user_metrics': }
-
-Then run
-
-  vagrant provision
-
-That should set up a user_metrics flask web app running in
-WSGI in apache.  It will be accessible at http://10.11.12.13:8121.
-
+Then run 'vagrant provision'. That should set up a User Metrics API WSGI app
+using the Flask framework and Apache as HTTP server. It will be accessible at
+http://10.11.12.13:8121. You may wish to forward this port so that it is
+accessible from the host environment. See the examples in the file
+'Vagrantfile' in the repository root directory.
diff --git a/puppet/modules/user_metrics/manifests/init.pp 
b/puppet/modules/user_metrics/manifests/init.pp
index d0ce5c5..ef90ec1 100644
--- a/puppet/modules/user_metrics/manifests/init.pp
+++ b/puppet/modules/user_metrics/manifests/init.pp
@@ -1,6 +1,15 @@
-# Dev site for https://metrics.wikimedia.org
-# Include this class in your site.pp and run vagrant provision.
-# The site will be available at http://10.11.12.13:8182
+# == Class: user_metrics
+#
+# Configures a development instance of the User Metrics API.
+# See <https://metrics.wikimedia.org>. This module is not included by
+# default. To use it, uncomment the following line in
+# puppet/manifests/extra.pp and run 'vagrant provision':
+#
+#  # class { 'user_metrics': }
+#
+# The site will be available at <http://10.11.12.13:8182>. You may wish
+# to forward the port so that it is accessible from the host environment.
+# See 'Vagrantfile' for detail.
 #
 class user_metrics {
        require mysql
diff --git a/puppet/modules/user_metrics/templates/settings.py.erb 
b/puppet/modules/user_metrics/templates/settings.py.erb
index 49d8b5f..93b87a6 100644
--- a/puppet/modules/user_metrics/templates/settings.py.erb
+++ b/puppet/modules/user_metrics/templates/settings.py.erb
@@ -1,4 +1,8 @@
-
+# -*- coding: utf-8 -*-
+#
+# Settings file for User Metrics API.
+# This file is managed by Puppet.
+#
 from user_metrics.config import logging
 from pkg_resources import WorkingSet , DistributionNotFound, VersionConflict
 from os.path import exists
diff --git a/puppet/modules/user_metrics/templates/virtual_host.erb 
b/puppet/modules/user_metrics/templates/virtual_host.erb
index fb0a303..71b225e 100644
--- a/puppet/modules/user_metrics/templates/virtual_host.erb
+++ b/puppet/modules/user_metrics/templates/virtual_host.erb
@@ -1,4 +1,6 @@
-# Note: This file is managed by Puppet.
+# Apache site for User Metrics API.
+# This file is managed by Puppet.
+#
 <%
 # ERb template variables:
 #

-- 
To view, visit https://gerrit.wikimedia.org/r/62199
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I15cf7a55894fda70cda5866872442e3946425acb
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to