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
