dotfiles应该放在一系列厨师食谱中?

时间:2013-04-24 10:19:51

标签: chef dotfiles chef-solo

我们正在慢慢将我们的基础设施转移到厨师手上并在途中建立一系列食谱。

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

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

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

是否有办法以不适用于普通食谱的方式包含实际文件,而是针对特定节点/用户?

2 个答案:

答案 0 :(得分:1)

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

例如:

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"

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

不一定需要复制文件。就个人而言,我将它们符号化,但你需要提前知道它们是如何设置的,以使脚本足够稳健,以便以稳定的方式工作。

答案 1 :(得分:1)

您还可以选择使用cookbook_file

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

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

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