[MediaWiki-commits] [Gerrit] Add 'env' module for managing shell environments - change (mediawiki/vagrant)

2013-07-14 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged.

Change subject: Add 'env' module for managing shell environments
..


Add 'env' module for managing shell environments

This change adds a lightweight Puppet module for managing /etc/profile.d shell
environment initialization scripts. The module uses the same pattern as the one
used for managing MediaWiki configuration snippets, which is to recursively
manage a 'puppet-managed' subdirectory of an *.d tree.

Change-Id: Icc4ae6dcfa507327853c0bd4fe6a2e15df7e9a1e
---
M puppet/manifests/roles.pp
M puppet/modules/browsertests/manifests/init.pp
A puppet/modules/env/files/profile.d-empty/README
A puppet/modules/env/files/puppet-managed.sh
A puppet/modules/env/manifests/init.pp
A puppet/modules/env/manifests/profile.pp
A puppet/modules/env/manifests/var.pp
A puppet/modules/env/templates/set-environment-var.sh.erb
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/manifests/phpsh.pp
M puppet/modules/misc/manifests/init.pp
M puppet/modules/misc/manifests/virtualbox.pp
12 files changed, 126 insertions(+), 21 deletions(-)

Approvals:
  Ori.livneh: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/puppet/manifests/roles.pp b/puppet/manifests/roles.pp
index 03f7d9d..91d00c8 100644
--- a/puppet/manifests/roles.pp
+++ b/puppet/manifests/roles.pp
@@ -18,6 +18,7 @@
 class { 'apt':
 stage => first,
 }
+class { 'env': }
 class { 'misc': }
 class { 'git': }
 }
diff --git a/puppet/modules/browsertests/manifests/init.pp 
b/puppet/modules/browsertests/manifests/init.pp
index 9732089..deb615c 100644
--- a/puppet/modules/browsertests/manifests/init.pp
+++ b/puppet/modules/browsertests/manifests/init.pp
@@ -44,9 +44,8 @@
 }
 
 # Sets MEDIAWIKI_URL environment variable for all users.
-file { '/etc/profile.d/mediawiki-url.sh':
-content => template('browsertests/mediawiki-url.sh.erb'),
-mode=> '0755',
+shell::var { 'MEDIAWIKI_URL':
+value => $mediawiki_url,
 }
 
 # Store the password for the 'Selenium_user' MediaWiki account.
diff --git a/puppet/modules/env/files/profile.d-empty/README 
b/puppet/modules/env/files/profile.d-empty/README
new file mode 100644
index 000..0c003ee
--- /dev/null
+++ b/puppet/modules/env/files/profile.d-empty/README
@@ -0,0 +1 @@
+This directory is managed by Puppet.
diff --git a/puppet/modules/env/files/puppet-managed.sh 
b/puppet/modules/env/files/puppet-managed.sh
new file mode 100644
index 000..31167ec
--- /dev/null
+++ b/puppet/modules/env/files/puppet-managed.sh
@@ -0,0 +1,8 @@
+if [ -d /etc/profile.d/puppet-managed ]; then
+  for i in /etc/profile.d/puppet-managed/*.sh; do
+if [ -r $i ]; then
+  . $i
+fi
+  done
+  unset i
+fi
diff --git a/puppet/modules/env/manifests/init.pp 
b/puppet/modules/env/manifests/init.pp
new file mode 100644
index 000..f0133bd
--- /dev/null
+++ b/puppet/modules/env/manifests/init.pp
@@ -0,0 +1,21 @@
+# == Class: env
+#
+# This lightweight Puppet module is used to manage the configuration of
+# shell environments.
+#
+class env {
+file { '/etc/profile.d/puppet-managed.sh':
+source => 'puppet:///modules/env/puppet-managed.sh',
+mode   => '0755',
+}
+
+file { '/etc/profile.d/puppet-managed':
+ensure  => directory,
+recurse => true,
+purge   => true,
+force   => true,
+source  => 'puppet:///modules/env/profile.d-empty',
+}
+
+File['/etc/profile.d/puppet-managed'] -> Env::Profile <| |>
+}
diff --git a/puppet/modules/env/manifests/profile.pp 
b/puppet/modules/env/manifests/profile.pp
new file mode 100644
index 000..2259cc1
--- /dev/null
+++ b/puppet/modules/env/manifests/profile.pp
@@ -0,0 +1,46 @@
+# == Define: env::profile
+#
+# This Puppet resource represents an /etc/profile.d shell script. These
+# scripts are typically used to initialize the shell environment.
+#
+# === Parameters
+#
+# [*content*]
+#   The desired content of the script, provided as a string. Either this
+#   or 'source' (but not both) must be defined.
+#
+# [*source*]
+#   URI of Puppet file or path reference to a local file that should be
+#   copied over to create this script. Either this or 'content' must be
+#   defined.
+#
+# [*script*]
+#   A short, descriptive name for the script, used to generate the
+#   filename. Defaults to the resource name.
+#
+# [*ensure*]
+#   If 'present' (the default), Puppet will ensure the script is in
+#   place. If 'absent', Puppet will remove it.
+#
+# === Example
+#
+#  env::profile { 'set python env vars':
+#  source => 'puppet:///modules/python/env-vars.sh',
+#  }
+#
+define env::profile(
+$content = undef,
+$source  = undef,
+$script  = $title,
+$ensure  = present,
+) {
+include env
+
+$script_name = regsubst($script, '\W', '_', 'G')
+file { "/etc/profile.d/puppet-managed/${script_name}.sh":
+  

[MediaWiki-commits] [Gerrit] Add 'env' module for managing shell environments - change (mediawiki/vagrant)

2013-07-14 Thread Ori.livneh (Code Review)
Ori.livneh has uploaded a new change for review.

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


Change subject: Add 'env' module for managing shell environments
..

Add 'env' module for managing shell environments

This change adds a lightweight Puppet module for managing /etc/profile.d shell
environment initialization scripts. The module uses the same pattern as the one
used for managing MediaWiki configuration snippets, which is to recursively
manage a 'puppet-managed' subdirectory of an *.d tree.

Change-Id: Icc4ae6dcfa507327853c0bd4fe6a2e15df7e9a1e
---
M puppet/manifests/roles.pp
M puppet/modules/browsertests/manifests/init.pp
A puppet/modules/env/files/profile.d-empty/README
A puppet/modules/env/files/puppet-managed.sh
A puppet/modules/env/manifests/init.pp
A puppet/modules/env/manifests/profile.pp
A puppet/modules/env/manifests/var.pp
A puppet/modules/env/templates/set-environment-var.sh.erb
M puppet/modules/mediawiki/manifests/init.pp
M puppet/modules/mediawiki/manifests/phpsh.pp
M puppet/modules/misc/manifests/init.pp
M puppet/modules/misc/manifests/virtualbox.pp
12 files changed, 132 insertions(+), 21 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/vagrant 
refs/changes/06/73606/1

diff --git a/puppet/manifests/roles.pp b/puppet/manifests/roles.pp
index 03f7d9d..91d00c8 100644
--- a/puppet/manifests/roles.pp
+++ b/puppet/manifests/roles.pp
@@ -18,6 +18,7 @@
 class { 'apt':
 stage => first,
 }
+class { 'env': }
 class { 'misc': }
 class { 'git': }
 }
diff --git a/puppet/modules/browsertests/manifests/init.pp 
b/puppet/modules/browsertests/manifests/init.pp
index 9732089..deb615c 100644
--- a/puppet/modules/browsertests/manifests/init.pp
+++ b/puppet/modules/browsertests/manifests/init.pp
@@ -44,9 +44,8 @@
 }
 
 # Sets MEDIAWIKI_URL environment variable for all users.
-file { '/etc/profile.d/mediawiki-url.sh':
-content => template('browsertests/mediawiki-url.sh.erb'),
-mode=> '0755',
+shell::var { 'MEDIAWIKI_URL':
+value => $mediawiki_url,
 }
 
 # Store the password for the 'Selenium_user' MediaWiki account.
diff --git a/puppet/modules/env/files/profile.d-empty/README 
b/puppet/modules/env/files/profile.d-empty/README
new file mode 100644
index 000..0c003ee
--- /dev/null
+++ b/puppet/modules/env/files/profile.d-empty/README
@@ -0,0 +1 @@
+This directory is managed by Puppet.
diff --git a/puppet/modules/env/files/puppet-managed.sh 
b/puppet/modules/env/files/puppet-managed.sh
new file mode 100644
index 000..31167ec
--- /dev/null
+++ b/puppet/modules/env/files/puppet-managed.sh
@@ -0,0 +1,8 @@
+if [ -d /etc/profile.d/puppet-managed ]; then
+  for i in /etc/profile.d/puppet-managed/*.sh; do
+if [ -r $i ]; then
+  . $i
+fi
+  done
+  unset i
+fi
diff --git a/puppet/modules/env/manifests/init.pp 
b/puppet/modules/env/manifests/init.pp
new file mode 100644
index 000..a939958
--- /dev/null
+++ b/puppet/modules/env/manifests/init.pp
@@ -0,0 +1,27 @@
+# == Class: shell
+#
+# Description
+#
+# === Parameters
+#
+# === Examples
+#
+#  class { 'shell':
+#  }
+#
+class env {
+file { '/etc/profile.d/puppet-managed.sh':
+source => 'puppet:///modules/env/puppet-managed.sh',
+mode   => '0755',
+}
+
+file { '/etc/profile.d/puppet-managed':
+ensure  => directory,
+recurse => true,
+purge   => true,
+force   => true,
+source  => 'puppet:///modules/env/profile.d-empty',
+}
+
+File['/etc/profile.d/puppet-managed'] -> Env::Profile <| |>
+}
diff --git a/puppet/modules/env/manifests/profile.pp 
b/puppet/modules/env/manifests/profile.pp
new file mode 100644
index 000..2259cc1
--- /dev/null
+++ b/puppet/modules/env/manifests/profile.pp
@@ -0,0 +1,46 @@
+# == Define: env::profile
+#
+# This Puppet resource represents an /etc/profile.d shell script. These
+# scripts are typically used to initialize the shell environment.
+#
+# === Parameters
+#
+# [*content*]
+#   The desired content of the script, provided as a string. Either this
+#   or 'source' (but not both) must be defined.
+#
+# [*source*]
+#   URI of Puppet file or path reference to a local file that should be
+#   copied over to create this script. Either this or 'content' must be
+#   defined.
+#
+# [*script*]
+#   A short, descriptive name for the script, used to generate the
+#   filename. Defaults to the resource name.
+#
+# [*ensure*]
+#   If 'present' (the default), Puppet will ensure the script is in
+#   place. If 'absent', Puppet will remove it.
+#
+# === Example
+#
+#  env::profile { 'set python env vars':
+#  source => 'puppet:///modules/python/env-vars.sh',
+#  }
+#
+define env::profile(
+$content = undef,
+$source  = undef,
+$script  = $title,
+$ensure  = present,
+) {
+include env
+
+$script_name = regsubst($script, '\W', '_', 'G')
+file { "/etc/profile.d/puppe