我们遇到了puppet java模块的问题。他们正在添加正确的路径,但他们不会删除旧路径:
C:\ Windows \ System32下>路径 PATH = C:\ WINDOWS \ SYSTEM32; C:\ WINDOWS; C:\ WINDOWS \ SYSTEM32 \ WBEM; C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \; C:\ PROGRAM 文件(x86)\ IBM \ RationalSDLC \ common ;; C:\ Program Files (x86)\ NTP \ bin; C:\ Program Files(x86)\ Puppet Labs \ Puppet \ bin; C:\ Program 文件\的Java \ jdk1.7.0_50 \ BIN; C:\ PROGRA〜1 \ Apache的行家\ BIN; C:\ PROGRAM 文件\爪哇\ jdk1.7.0_55 \ BIN
您可以看到它在末尾添加了正确的路径,但原始版本jdk1.7_50 \ bin仍然存在。如何在每次安装较新版本时确保删除旧版本?
编辑:更重要的是我们需要做的是让它搜索JAVA_HOME
路径变量,将其与Path
变量进行比较,删除任何不属于的java目录,然后复制{{1到JAVA_HOME
。希望这是有道理的。
答案 0 :(得分:0)
puppetlabs-java模块似乎没有努力更新默认环境。
我相信您观察到的行为是由Java安装程序本身采取的操作产生的。
如果您可以找到Java将命令附加到PATH
的位置,您可以让Puppet使用stdlib模块中的file_line
类型删除过时的行
编辑:
如果您的路径是通过this module管理的,则需要向清单添加资源以删除每个过时的条目,例如:
windows_path {
'java7u50':
ensure => absent,
directory => 'C:\Program Files\Java\jdk1.7.0_50\bin';
}
要为许多版本简化此操作,您可以创建已定义的类型:
define obsolete_java {
windows_path {
$name:
ensure => absent,
directory => "C:\Program Files\Java\$name\bin";
}
}
并像
一样使用它obsolete_java { [ 'jdk1.7.0_50', 'jdk1.7.0_42', ... ]: }