Chef infra 使用“magic_shell”食谱更新$PATH

Chef infra 使用“magic_shell”食谱更新$PATH,chef-infra,Chef Infra,我创作了两本食谱:java_kevin和maven_kevin: cookbooks/java\u kevin/recipes/default.rb node.default['user']='vagrant' node.default['user_home']='/home/'+node['user'] node.default['my_dir']=node['user_home']+'/my' node.default['vagrant']='/vagrant' node.default['

我创作了两本食谱:java_kevin和maven_kevin:

cookbooks/java\u kevin/recipes/default.rb

node.default['user']='vagrant'
node.default['user_home']='/home/'+node['user']
node.default['my_dir']=node['user_home']+'/my'
node.default['vagrant']='/vagrant'
node.default['java_home']=node['my_dir']+'/jdk1.7.0_51'
#安装Java7RPM
执行“安装oracle\u java7”执行
命令“rpm-ivh--prefix=“+node['my_dir']+”jdk-7u51-linux-x64.rpm”
cwd节点['vagrant']
创建节点['java_home']
结束
魔幻外壳环境“JAVA之家”吗
值节点['java_home']
结束
神奇的外壳环境“路径”是什么
值“$PATH:”+node['java_home']+'/bin'
结束
食谱/maven_kmm/recipes/default.rb

node.default['user']='vagrant'
node.default['user_home']='/home/'+node['user']
node.default['my_dir']=node['user_home']+'/my'
node.default['maven_download_dir']=node.default['user_home']+'/apache-maven-3.2.1-bin.tar.gz'
#下载Maven 3.2.1
远程文件节点['maven\u download\u dir']do
来源“http://www.bizdirusa.com/mirrors/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz"
校验和“aaef971206104e04e21a3b580d9634fe”
结束
执行“解包和解压”do
命令“tar-zxvf”+节点['maven_download_dir']
cwd节点['user_home']
创建节点['user_home']+'/apache-maven-3.2.1'
结束
执行“移动到我的目录”执行
命令“mv”+node['user_home']+'/apache-maven-3.2.1'+''+node['my_dir']
cwd节点['user_home']
创建节点['my_dir']+'/apache-maven-3.2.1'
结束
node.default['maven_home']=node['my_dir']+'/apache-maven-3.2.1'
神奇的贝壳环境“M2之家”吗
值节点['maven_home']
结束
神奇的外壳环境“路径”是什么
值“$PATH:”+node['maven_home']+'/bin'
结束
设置之后,我只看到Maven路径被正确地添加到
$path

[vagrant@vagrant-centos65~]$echo$PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/my/apache-maven-3.2.1/bin:/home/vagrant/bin
[vagrant@vagrant-centos65~]$哪个mvn
~/rm/apache-maven-3.2.1/bin/mvn
[vagrant@vagrant-centos65~]$哪个java
/usr/bin/which:no-java-in(/usr/local/bin:/bin:/usr/bin:。。。。

为什么
JAVA\u HOME
不是最终的
$PATH
项目的一部分?

我相信magic\u shell\u环境会为每个资源名创建一个唯一的文件(这里是“PATH”--Check/etc/profile.d/PATH.sh)并且每次都会重新创建该文件。在这里,您的两个配方都试图创建同一个文件。而且,第一个配方创建的PATH.sh文件很可能会被第二个配方覆盖

我不知道如何使用magic_shell解决这个问题,但我相信这就是你的问题“为什么”的答案