puppet - 如何附加到路径变量?

man*_*ish 5 puppet

我可以访问我们团队的一个模块,其中全局清单由基础架构团队维护.该PATH变量被全球清单设置.

我想附加到PATH变量,但是puppet忽略了我的exec块.

file { "/etc/profile.d/set_java_home.sh":
    ensure => file,
    source => "puppet:///modules/teamXXX/set_java_home.sh",
    mode => "u=rw,go=r"
}

Exec { path => [ "\${PATH}", "\${JAVA_HOME}/bin" ] }
Run Code Online (Sandbox Code Playgroud)

如何附加PATH变量?

编辑

我应该提到,我希望增强PATH用户shell环境的变量,而不是puppet的执行环境.

Fel*_*ank 6

Puppet无法改变正在运行的shell的环境.没有子进程可以 - 将环境复制到每个子进程,然后只能访问其单个副本.

要向PATH所有新登录shell添加内容,您需要更改profile配置文件.如果您使用的是最新版本bash,则应该有/etc/profile.d.您可以使用这样的资源:

file { '/etc/profile.d/append-java-path.sh':
    mode    => '644',
    content => 'PATH=$PATH:/my/java/home/bin',
}
Run Code Online (Sandbox Code Playgroud)