厨师 – 定义
厨师 – 定义
定义可以定义为一种对资源进行分组的逻辑方法,这些资源会被反复使用。在此流程中,我们对资源进行分组并为其命名,以重新获得定义好的说明书的可读性。
为了做到这一点,我们应该有一个食谱。在这种情况下,我们使用 test_cookbook 和节点的运行列表,其中包括食谱。
创建定义
步骤 1 – 在说明书定义文件夹中创建一个新的定义文件。
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/definitions/ capistrano_deploy_dirs.rb define :capistrano_deploy_dirs, :deploy_to => '' do directory "#{params[:deploy_to]}/releases" directory "#{params[:deploy_to]}/shared" directory "#{params[:deploy_to]}/shared/system" end
第 2 步– 在食谱默认配方中使用定义。
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb capistrano_deploy_dirs do deploy_to "/srv" end
第 3 步– 将食谱上传到厨师服务器。
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook Uploading test_cookbook [0.1.0]
第 4 步– 在所需节点上运行 Chef 客户端。
vipin@laptop:~/chef-repuser@server $ sudo chef-client ...TRUNCATED OUTPUT... [2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/ releases] action create (my_cookbook::default line 2) [2013-01-18T16:31:11+00:00] INFO: directory[/srv/releases] created directory /srv/releases [2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/ shared] action create (my_cookbook::default line 3) [2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared] created directory /srv/shared [2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/ shared/system] action create (my_cookbook::default line 4) [2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared/system]
食谱中的定义就像微型,它将资源分组并为其命名。定义有一个名称,通过它可以告诉他们可以在配方中调用哪个,并且它有一个周长列表。
在定义中,我们的代码中有如下所示的参数。
….. directory "#{params[:deploy_to]}/releases" directory "#{params[:deploy_to]}/shared" directory "#{params[:deploy_to]}/shared/system” ……
它可以在默认配方中使用,如下所示。
capistrano_deploy_dirs do deploy_to "/srv"` end