Chef infra 使用刀子在服务器上引导配方并转发版本参数

Chef infra 使用刀子在服务器上引导配方并转发版本参数,chef-infra,knife,Chef Infra,Knife,我有一个非常简短的食谱,看起来像这样: bash "install app" do cwd "/var/lib/app" code <<-EOH npm set registry http://npm.app.com/ npm install app EOH end knife bootstrap 1.2.3.4 --ssh-user root --ssh-password password --ssh-port 22 --run-list

我有一个非常简短的食谱,看起来像这样:

bash "install app" do
    cwd "/var/lib/app"
    code <<-EOH
    npm set registry http://npm.app.com/
    npm install app
    EOH
end
knife bootstrap 1.2.3.4 --ssh-user root --ssh-password password --ssh-port 22 --run-list "recipe[myapp]" --ver 2.2.30
bash "install app" do
    cwd "/var/lib/app"
    code <<-EOH
    npm set registry http://npm.app.com/
    npm install app@2.2.30
    EOH
end
我想知道如何在我的刀子命令中传递一个版本号,并将bash脚本更改为也接受该版本,如下所示:

bash "install app" do
    cwd "/var/lib/app"
    code <<-EOH
    npm set registry http://npm.app.com/
    npm install app
    EOH
end
knife bootstrap 1.2.3.4 --ssh-user root --ssh-password password --ssh-port 22 --run-list "recipe[myapp]" --ver 2.2.30
bash "install app" do
    cwd "/var/lib/app"
    code <<-EOH
    npm set registry http://npm.app.com/
    npm install app@2.2.30
    EOH
end
配方应该是这样的:

bash "install app" do
    cwd "/var/lib/app"
    code <<-EOH
    npm set registry http://npm.app.com/
    npm install app
    EOH
end
knife bootstrap 1.2.3.4 --ssh-user root --ssh-password password --ssh-port 22 --run-list "recipe[myapp]" --ver 2.2.30
bash "install app" do
    cwd "/var/lib/app"
    code <<-EOH
    npm set registry http://npm.app.com/
    npm install app@2.2.30
    EOH
end
bash“安装应用程序”怎么办
cwd“/var/lib/app”

代码是的。。u可以在运行时传递参数。因为你想让别人看到一个版本

node.default['version']=node['version'].to_hash
node.default['version']。每个do | version,version_值|

bash "install app" do 
     cwd "/var/lib/app" 
     code <<-EOH  
       npm set registry http://npm.app.com/  
       npm install app@<@ = version_value>   
   EOH  
end
bash“安装应用程序”怎么办
cwd“/var/lib/app”
代码签出答案