参考:http://docs.opscode.com/essentials_cookbook_recipes_run_lists.html
Recipe的概念简单说下,就是Resource的集合,你可以把recipe绑定到node或者client的runlist上,这样,client会自动执行该recipe(或者在client上运行 sudo chef-client的时候执行)。
1. 最简单的例子,执行:D:\Tools\Chef\chef-repo-master>knife node run_list add ec2-54-234-202-177.compute-1.amazonaws.com "recipe[cb_first::h2]"。这个命令的意思就是,将cookbook cb_first的名字是h2的recipe绑定到这个EC2的runlist上。接着你在EC2上执行"sudo chef-client"就会看到,这个h2的recipe就会被执行了。当然,前提是,你cookbook cb_first的recipe文件夹下有一个h2.rb文件,而且这个cookbook已经被upload到chef server上了。
2. 有了上面那个例子,就可以去实践recipe的编写了。具体的步骤就是,Workstation上面写reciple,写完后,upload包含这个recipe的cookbook,再将改recipe绑定到client的runlist上(假如你重用同一个recipe,那么这步就可以省略)。随后通过putty登录client,在client上执行sudo chef-client。最后验证。
3. 几点补充:
- 如果你想绑定的是default.rb,你可以不写::h2,或者写::default_recipe。
- 有多个recipe需要绑定的话,可以通过逗号分隔。