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

时间:2013-08-29 13:55:14

标签: chef 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 "recipe[myapp]"

我想知道如何在我的knife命令中传递版本号并更改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参数的例子。

1 个答案:

答案 0 :(得分:0)

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

node.default [&#39;版本&#39;] =节点[&#39;版本&#39;]。to_hash
node.default [&#39; version&#39;]。每个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

bootstrapping命令:

刀具引导程序1.2.3.4 -x root -P password -r&#34; recipe [myapp]&#34; -j&#39; {&#34;版本&#34;:{&#34; version_value&#34;:&#34; 2.2.30&#34;}}&#39;