我们正在慢慢地将我们的基础设施转移到 chef 上,并在此过程中建立一系列食谱。
我不确定的一件事是节点/角色/用户特定的点文件应该去哪里。
例如,我们可以使用 rbenv 食谱为多个用户安装 rbenv,
用户 A 可能不需要 rdoc 文档,因此需要自定义.gemrc
文件。
这应该去哪里?
我们可以将文件内容放在节点/角色特定的 JSON 文件中,或者放在数据包中,但这感觉不对。
有没有办法以一种不是针对一般食谱而是针对特定节点/用户的方式包含实际文件?
我们正在慢慢地将我们的基础设施转移到 chef 上,并在此过程中建立一系列食谱。
我不确定的一件事是节点/角色/用户特定的点文件应该去哪里。
例如,我们可以使用 rbenv 食谱为多个用户安装 rbenv,
用户 A 可能不需要 rdoc 文档,因此需要自定义.gemrc
文件。
这应该去哪里?
我们可以将文件内容放在节点/角色特定的 JSON 文件中,或者放在数据包中,但这感觉不对。
有没有办法以一种不是针对一般食谱而是针对特定节点/用户的方式包含实际文件?
我历来处理这个问题的方法是将用户的 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"
您还可以将存储库设置为节点属性,以便它们不仅限于自己的存储库。
这些文件也不一定需要复制。就个人而言,我对它们进行了符号链接,但您需要提前了解它们是如何设置的,以使脚本足够健壮,以便以稳定的方式工作。
您确实可以使用另一种选择cookbook_file
。
如果您创建一个包含每个人的点文件的食谱,效果如下:
cookbook_file "billy.vimrc" do
path "/home/billy/.vimrc"
end
让每个人都拥有对总体食谱/回购的承诺权,并通过这种方式将事情推出。IT 是一个 hack,清理(假设有人离开)可能有点烦人,但用户管理通常是 ;)。