我是 Chef 的新手。我一直在使用chef-solo
,到目前为止我非常喜欢它。有一件事我不清楚,那就是为不同的组织处理同一软件的软件配置的最佳实践是什么。
例如:
假设我想管理 Redis 安装二不同的组织。假设一个组织需要以两种不同的方式配置 Redis。因此,我们三配置。
我是否要创建一个厨房,其中包含一本包含三个 Redis 菜谱的 Redis 食谱?我是否要为每个组织创建一个厨房?
完成所有这些的最佳做法是什么?谢谢。
答案1
您可以通过将配置文件转换为模板并将不同的配置部分转换为各个说明书中的属性来实现这一点。然后,您可以逐个节点指定这些属性。
使用 Chef solo 的最简单方法是针对不同的机器设置不同的运行列表,并在其中指定属性。
另外,如果您计划使用集中管理的 Chef 存储库来管理多个不同的客户/客户端,我会确保您的 Chef 存储库的任何部分都没有任何敏感信息,因为除非您使用加密数据包,否则节点几乎可以完全免费查询任何食谱或属性集,即使这样,根据您分发密钥的方式,它们也可能不安全。这只是未来要考虑的事情。
答案2
在运行列表中使用 2 本食谱。
第一个食谱包含组织特定参数作为节点属性
default['redis']['data_dir']="/data/company1/redis"
第二本食谱完成了所有繁重的工作,并根据需要使用第一本食谱中的参数。
directory "#{node['redis']['data_dir']" do owner myapp mode 0755 action :create end
如果您不想要 2 本食谱,您也可以使用数据包提供参数。