21

我是 Chef 的新手,在阅读了文档后,我仍然无法理解何时使用属性以及何时使用数据包。

什么样的数据应该存储为属性,什么样的数据应该存储在数据包中?

谢谢

4

2 回答 2

24

这得看情况。虽然数据包和属性都保存数据,但它们之间的主要区别在于,属性在运行配方时作为节点属性公开,但是您没有清楚地了解使用了哪些数据包(除了您在运行列表)。

我个人存储在属性中的是:

  • 安装、创建某些东西(文件、程序)的路径
  • 软件版本
  • 网址,端口(下载,服务器监听等)
  • 用户名

在数据包中:

  • 所有不能暴露的东西——在加密的数据包中(私钥、密码)
  • 用户属性(名称、shell、密码哈希、公钥、评论等)
  • 其他一些配置,更像是对象,而不是简单的字符串或数字数据,这对节点本身并不重要。

关于最后一点:一个例子是maven repositories list。存储库具有属性:名称、url、策略等。对于节点来说,配置什么存储库并不重要——重要的是它安装了 maven。另一个例子是用户,属性中只有可用的用户名。所有其他数据都在数据包中,尽管它可以被暴露——那里没有秘密数据。

于 2013-03-08T08:50:57.890 回答
1

当然,这是没有简单答案的事情之一。我的经验法则是,任何事物中的一种都属于数据包。例如,如果您有一个要使用fnichol 的用户手册在节点上创建的用户和组的列表,那么这就是一个数据包。为了调整 MySQL 服务器上的参数,它是属性。

于 2014-03-08T20:31:17.243 回答