如何使用puppet在服务器上设置环境变量?

raz*_*nha 3 ruby jruby environment-variables puppet production-environment

我开始在我目前的项目中使用木偶,我遇到了一些问题.

我正在使用配方来安装jruby,但我想在完成jruby安装后设置一个环境变量(在这种情况下,JRUBY_HOME并修改PATH以包含JRUBY_HOME/bin).

这是食谱:

class jruby {
  $jruby_home = "/opt/jruby"


  exec { "download_jruby":
    command => "wget http://jruby.org.s3.amazonaws.com/downloads/1.7.0.RC2/jruby-bin-1.7.0.RC2.tar.gz",
    path => $path,    
    timeout => 0,
    unless => "ls /opt | grep jruby-1.7.0",
    require => Package["openjdk-7-jre-headless"]
  }                

  exec { "unpack_jruby" :
    command => "tar -zxf jruby-bin-1.7.0.RC2.tar.gz -C /opt",
    path => $path,
    creates => "${jruby_home}-1.7.0.RC2",
    require => Exec["download_jruby"]
  }                             

  file { $jruby_home:
    ensure => link,
    target => "${jruby_home}-1.7.0.RC2",
    require => Exec["unpack_jruby"]
  }                          

}  
Run Code Online (Sandbox Code Playgroud)

那么,将/ opt/jruby添加为JRUBY_HOME然后将JRUBY_HOME/bin添加到PATH的最佳方法是什么?

raz*_*nha 5

解决了它:

# init.pp
$jruby_sh = "/etc/profile.d/jruby.sh"
file { $jruby_sh:
  ensure => present,
  source => "puppet:///modules/jruby/jruby.sh",
  owner => "root",
  group => "root",
  mode => 644,
  require => File[$jruby_home]
}

# jruby.sh
export JRUBY_HOME=/opt/jruby
export PATH=$PATH:$JRUBY_HOME/bin
Run Code Online (Sandbox Code Playgroud)