jenkins-bot has submitted this change and it was merged.
Change subject: Add 'git' module; re-organize accordingly
......................................................................
Add 'git' module; re-organize accordingly
This takes the Puppet manifests for git-cloning mediawiki/core and
refactors them to be more generally useful.
Also refactors wikimedia apt source setup to use a template.
Change-Id: I4c475126acb69de5f78af3f490dc50aa12e193a0
---
M puppet/manifests/site.pp
A puppet/modules/git/manifests/clone.pp
A puppet/modules/git/manifests/init.pp
D puppet/modules/mediawiki/manifests/git.pp
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/manifests/phpsh.pp
D puppet/modules/misc/manifests/apt.pp
D puppet/modules/misc/manifests/apt/wikimedia.pp
M puppet/modules/misc/manifests/init.pp
A puppet/modules/misc/manifests/wikimedia.pp
A puppet/modules/misc/templates/wikimedia.list.erb
11 files changed, 85 insertions(+), 68 deletions(-)
Approvals:
Ori.livneh: Looks good to me, approved
jenkins-bot: Verified
diff --git a/puppet/manifests/site.pp b/puppet/manifests/site.pp
index 170deb1..dc3175d 100644
--- a/puppet/manifests/site.pp
+++ b/puppet/manifests/site.pp
@@ -32,4 +32,5 @@
class { 'memcached': }
class { 'misc': }
+class { 'git': }
class { 'mediawiki': }
diff --git a/puppet/modules/git/manifests/clone.pp
b/puppet/modules/git/manifests/clone.pp
new file mode 100644
index 0000000..ca9de0e
--- /dev/null
+++ b/puppet/modules/git/manifests/clone.pp
@@ -0,0 +1,17 @@
+define git::clone($directory, $remote=undef) {
+
+ include git
+
+ $url = $remote ? {
+ undef => sprintf($git::urlformat, $title),
+ default => $remote,
+ }
+
+ exec { "git clone ${title}":
+ command => "git clone ${options} ${url} ${directory}",
+ creates => "${directory}/.git/refs/remotes",
+ require => Package['git'],
+ logoutput => true,
+ timeout => 0,
+ }
+}
diff --git a/puppet/modules/git/manifests/init.pp
b/puppet/modules/git/manifests/init.pp
new file mode 100644
index 0000000..81e02a1
--- /dev/null
+++ b/puppet/modules/git/manifests/init.pp
@@ -0,0 +1,36 @@
+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'
+
+ exec { 'git-core ppa':
+ command => 'add-apt-repository --yes ppa:git-core/ppa',
+ notify => Exec['apt-get update'],
+ creates => '/etc/apt/sources.list.d/git-core-ppa-precise.list',
+ before => Package['git'],
+ }
+
+ package { 'git':
+ ensure => latest,
+ require => Exec['git-core ppa'],
+ }
+
+ exec { 'pip install git-review':
+ unless => 'which git-review',
+ require => Package['python-pip', 'git'],
+ }
+
+ exec { 'apt-get update':
+ refreshonly => true,
+ }
+}
diff --git a/puppet/modules/mediawiki/manifests/git.pp
b/puppet/modules/mediawiki/manifests/git.pp
deleted file mode 100644
index 2d0a742..0000000
--- a/puppet/modules/mediawiki/manifests/git.pp
+++ /dev/null
@@ -1,35 +0,0 @@
-# Clone MediaWiki via Git
-class mediawiki::git(
- $remote = 'https://gerrit.wikimedia.org/r/p/mediawiki/core.git',
- $shallow = false
-) {
-
- $git_extra_args = $shallow ? {
- true => '--depth=1',
- default => '',
- }
-
- exec { 'add-git-core-ppa':
- command => 'add-apt-repository --yes ppa:git-core/ppa &&
apt-get update',
- creates => '/etc/apt/sources.list.d/git-core-ppa-precise.list',
- before => Package['git'],
- }
-
- package { 'git':
- ensure => latest,
- before => Exec['git-clone-mediawiki'],
- }
-
- exec { 'git-clone-mediawiki':
- creates => '/vagrant/mediawiki/.git/refs/remotes',
- command => "git clone ${git_extra_args} ${remote}
/vagrant/mediawiki",
- timeout => 0,
- logoutput => true,
- }
-
- exec { 'install-git-review':
- command => 'pip install git-review',
- unless => 'which git-review',
- require => Package['python-pip', 'git'],
- }
-}
diff --git a/puppet/modules/mediawiki/manifests/init.pp
b/puppet/modules/mediawiki/manifests/init.pp
index 1fc3186..56b4980 100644
--- a/puppet/modules/mediawiki/manifests/init.pp
+++ b/puppet/modules/mediawiki/manifests/init.pp
@@ -9,19 +9,22 @@
$server = 'http://127.0.0.1:8080',
) {
+ class { 'php': }
+ class { 'phpsh': }
class { 'mysql':
dbname => $dbname,
password => $pass,
}
- class { 'git':
- shallow => true,
- }
- class { 'php': }
- class { 'phpsh': }
apache::site { 'default':
ensure => absent,
}
+
+ git::clone { 'mediawiki':
+ remote =>
'https://gerrit.wikimedia.org/r/p/mediawiki/core.git',
+ directory => '/vagrant/mediawiki',
+ }
+
file { '/etc/apache2/sites-enabled/000-default':
ensure => absent,
@@ -34,7 +37,7 @@
# delete it.
exec { 'check-settings':
command => 'rm /vagrant/mediawiki/LocalSettings.php 2>/dev/null
|| true',
- require => [ Package['php5'], Exec['git-clone-mediawiki'],
Service['mysql'] ],
+ require => [ Package['php5'], Git::Clone['mediawiki'],
Service['mysql'] ],
unless => 'php /vagrant/mediawiki/maintenance/eval.php
<<<"wfGetDB(-1)" &>/dev/null',
before => Exec['mediawiki-setup'],
}
@@ -45,7 +48,7 @@
}
exec { 'mediawiki-setup':
- require => Exec['set-mysql-password',
'git-clone-mediawiki'],
+ require => [ Exec['set-mysql-password'],
Git::Clone['mediawiki'] ],
creates => '/vagrant/mediawiki/LocalSettings.php',
cwd => '/vagrant/mediawiki/maintenance/',
command => "php install.php ${wiki} ${admin} --pass ${pass}
--dbname ${dbname} --dbuser ${dbuser} --dbpass ${dbpass} --server ${server}
--scriptpath '/w'",
diff --git a/puppet/modules/mediawiki/manifests/phpsh.pp
b/puppet/modules/mediawiki/manifests/phpsh.pp
index 02ca095..d3c97dd 100644
--- a/puppet/modules/mediawiki/manifests/phpsh.pp
+++ b/puppet/modules/mediawiki/manifests/phpsh.pp
@@ -33,7 +33,7 @@
}
exec { 'generate-ctags':
- require => [ Package['exuberant-ctags'],
Exec['git-clone-mediawiki'] ],
+ require => [ Package['exuberant-ctags'],
Git::Clone['mediawiki'] ],
command => 'ctags --languages=php --recurse -f
/vagrant/mediawiki/tags /vagrant/mediawiki',
creates => '/vagrant/mediawiki/tags',
}
diff --git a/puppet/modules/misc/manifests/apt.pp
b/puppet/modules/misc/manifests/apt.pp
deleted file mode 100644
index 29827fb..0000000
--- a/puppet/modules/misc/manifests/apt.pp
+++ /dev/null
@@ -1,6 +0,0 @@
-class misc::apt {
- exec { 'apt-get update':
- command => '/usr/bin/apt-get update',
- refreshonly => true,
- }
-}
\ No newline at end of file
diff --git a/puppet/modules/misc/manifests/apt/wikimedia.pp
b/puppet/modules/misc/manifests/apt/wikimedia.pp
deleted file mode 100644
index 3c7b4f3..0000000
--- a/puppet/modules/misc/manifests/apt/wikimedia.pp
+++ /dev/null
@@ -1,18 +0,0 @@
-class misc::apt::wikimedia {
- include misc::apt
-
- exec { 'wikimedia_apt_key_add':
- command => "/usr/bin/curl
http://apt.wikimedia.org/autoinstall/keyring/wikimedia-archive-keyring.gpg |
/usr/bin/gpg --import && /usr/bin/gpg --export --armor Wikimedia |
/usr/bin/apt-key add -",
- user => 'root',
- unless => '/usr/bin/apt-key list | /bin/grep -q Wikimedia',
- }
-
- # include wikimedia apt repository
- file { '/etc/apt/sources.list.d/wikimedia.list':
- content => "## Wikimedia APT repository
-deb http://apt.wikimedia.org/wikimedia ${::lsbdistcodename}-wikimedia main
universe
-deb-src http://apt.wikimedia.org/wikimedia ${::lsbdistcodename}-wikimedia main
universe",
- notify => Exec['apt-get update'],
- require => Exec['wikimedia_apt_key_add'],
- }
-}
diff --git a/puppet/modules/misc/manifests/init.pp
b/puppet/modules/misc/manifests/init.pp
index efa5a51..997faf3 100644
--- a/puppet/modules/misc/manifests/init.pp
+++ b/puppet/modules/misc/manifests/init.pp
@@ -1,7 +1,8 @@
# Provides small enhancements to the shell, such as color prompt and MOTD.
class misc {
- include virtualbox
+ include misc::virtualbox
+ include misc::wikimedia
file { '/etc/profile.d/color.sh':
ensure => file,
diff --git a/puppet/modules/misc/manifests/wikimedia.pp
b/puppet/modules/misc/manifests/wikimedia.pp
new file mode 100644
index 0000000..ef8c093
--- /dev/null
+++ b/puppet/modules/misc/manifests/wikimedia.pp
@@ -0,0 +1,15 @@
+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 -",
+ unless => 'apt-key list | grep -q Wikimedia',
+ }
+
+ file { '/etc/apt/sources.list.d/wikimedia.list':
+ 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
new file mode 100644
index 0000000..d3e159f
--- /dev/null
+++ b/puppet/modules/misc/templates/wikimedia.list.erb
@@ -0,0 +1,3 @@
+# Wikimedia APT repository
+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
--
To view, visit https://gerrit.wikimedia.org/r/60633
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I4c475126acb69de5f78af3f490dc50aa12e193a0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/vagrant
Gerrit-Branch: master
Gerrit-Owner: Ori.livneh <[email protected]>
Gerrit-Reviewer: Ori.livneh <[email protected]>
Gerrit-Reviewer: Ottomata <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits