0

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

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]"

我想知道如何在我的刀命令中传递版本号并将 bash 脚本更改为也采用该版本,如下所示:

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

我在刀引导手册上读到我可以使用“-j”标志来传递 json 参数,但我找不到任何关于如何在配方中实际使用这些 json 参数的示例。

4

1 回答 1

0

是的..你可以在运行时传递参数。因为你想看到一个版本

node.default['version'] = node['version'].to_hash
node.default['version'].each do |version, version_value|

bash "install app" do 
     cwd "/var/lib/app" 
     code <<-EOH  
       npm set registry http://npm.app.com/  
       npm install app@<@ = version_value>   
   EOH  
end

引导命令:

刀引导 1.2.3.4 -x root -P 密码 -r "recipe[myapp]" -j '{"version":{"version_value":"2.2.30"}}'

于 2014-05-15T06:52:12.110 回答