3

我们正在慢慢地将我们的基础设施转移到 chef 上,并在此过程中建立一系列食谱。

我不确定的一件事是节点/角色/用户特定的点文件应该去哪里。

例如,我们可以使用 rbenv 食谱为多个用户安装 rbenv,
用户 A 可能不需要 rdoc 文档,因此需要自定义.gemrc文件。

这应该去哪里?
我们可以将文件内容放在节点/角色特定的 JSON 文件中,或者放在数据包中,但这感觉不对。

有没有办法以一种不是针对一般食谱而是针对特定节点/用户的方式包含实际文件?

4

2 回答 2

1

我历来处理这个问题的方法是将用户的 Github 配置文件名称添加到他们的节点,如果设置了该属性,则下载他们自己托管的点文件,如果没有设置默认(组织)。

例如:

git "/home/user/dotfiles" do
  repository "git@github.com:git_user/dotfiles.git"
  user "user"
  group "user"
end

execute "cp -R /home/user/dotfiles /home/user"

您还可以将存储库设置为节点属性,以便它们不仅限于自己的存储库。

这些文件也不一定需要复制。就个人而言,我对它们进行了符号链接,但您需要提前了解它们是如何设置的,以使脚本足够健壮,以便以稳定的方式工作。

于 2013-04-26T21:11:13.460 回答
1

您确实可以使用另一种选择cookbook_file

如果您创建一个包含每个人的点文件的食谱,效果如下:

cookbook_file "billy.vimrc" do
  path "/home/billy/.vimrc"
end

让每个人都拥有对总体食谱/回购的承诺权,并通过这种方式将事情推出。IT 是一个 hack,清理(假设有人离开)可能有点烦人,但用户管理通常是 ;)。

于 2014-01-24T15:58:33.440 回答