我是厨师新手。 我一直在使用chef-solo ,我真的很喜欢它。 有一件事情我不清楚是为不同组织处理相同软件的软件configuration的最佳实践。
例如:
假设我想pipe理两个不同组织的Redis安装。 假设一个组织需要以两种不同的方式configurationRedis。 所以,这给我们留下了三种configuration。
我用Redis食谱制作一个Redis食谱的厨房吗? 我为每个组织创build一个厨房吗?
做所有这些的最佳做法是什么? 谢谢。
您可以通过将configuration文件转换为模板,并将各个configuration的不同部分制作成各个烹饪书中的属性来实现此目的。 然后,您可以逐个节点地指定这些属性。
厨师独奏最简单的方法是为您的不同机器设置不同的运行列表,在其中指定属性。
在另一个说明中,如果您打算使用集中pipe理的Chef存储库来pipe理多个不同的客户/客户端,那么我会确保在Chef存储库的任何部分都没有任何敏感内容,因为节点几乎可以完全免费查询任何cookbook或属性集,除非你使用encryption的数据包,即使如此,取决于你如何分配密钥,他们可能不安全。 只是在将来想一想。
在运行列表中使用2个食谱。
第一本食谱包含组织特定参数作为节点属性
default['redis']['data_dir']="/data/company1/redis"
第二本食谱做了所有的繁重工作,根据需要从第一本食谱中消耗参数。
directory "#{node['redis']['data_dir']" do owner myapp mode 0755 action :create end
如果你不想要2个食谱,你也可以使用数据包提供参数。