[MediaWiki-commits] [Gerrit] Add 'env' module for managing shell environments - change (mediawiki/vagrant)
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)
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