盐堆:谷物与支柱

时间:2012-10-29 04:03:09

标签: salt-stack configuration-management

Salt system中有谷物和柱子。我理解如何分配定制谷物,但何时考虑使用支柱会更好?

4 个答案:

答案 0 :(得分:26)

在Salt中,谷物用于你的小兵的不可变的方面,例如cpu,记忆,位置,时区等。

支柱是您需要分发给您的小兵的主人(SLS格式)数据列表。 Pillar允许您设置小兵可以访问的变量,例如数据库配置选项。

答案 1 :(得分:15)

这里的根本区别在于你可以将自定义纹理设置为小兵的固有属性,而不是支柱,需要在某个时刻指定给小兵。

例如,有两种实用方法可以将角色分配给一个小兵:小兵身份或使用自定义谷物。然后,您可以匹配top.sls文件中的minion id或自定义grain,如下所示:

# salt/top.sls
base:
  # match against custom grain
  'G@role:webserver':
    - match: compound
    - webserver
  'G@role:search':
    - match: compound
    - elasticsearch
  # match against minion id
  'minion_db*':
    - database

你不能用柱子这样做。虽然你确实可以用柱子瞄准,但你首先需要一种方法来为你的仆从分配支柱(这必须是minion id,或者如上所述的颗粒)。考虑一下如何在柱顶文件中分配柱子,你需要使用minion的固有属性来分配这个柱子数据。

# pillar/top.sls
base:
  'G@env:dev':
    - match: compound
    - dev_settings
  'G@env:prod':
    - match: compound
    - prod_settings

这里的模式是你使用grain(或minion id)作为设置你的小兵的类型/角色/环境的最小方法。之后,您使用支柱数据为其提供所有适当的详细设置。

答案 2 :(得分:14)

简而言之,自定义静态谷物可能比支柱更糟糕。

| Differences                  | Grains                        | Pillars                             |
|------------------------------|-------------------------------|-------------------------------------|
| This is info which...        | ... Minion knows about itself | ... Minion asks Master about        |
|                              |                               |                                     |
| Distributed:                 | Yes (different per minion)    | No (single version per master)      |
| Centralized:                 | No                            | Yes                                 |
|                              |                               |                                     |
| Computed automatically:      | Yes (preset/computed value)   | No (only rendered from Jinja/YAML)  |
| Assigned manually:           | No (too elaborate)            | Yes (Jinja/YAML sources)            |
|                              |                               |                                     |
| Conceptually intrinsic to... | ... individual Minion node    | ... entire system managed by Master |
| Data under revision control: | No (computed values)          | Yes (Jinja/YAML sources)            |
|                              |                               |                                     |
| They define rather...        | _provided_ resources          | _required_ resources                |
|                              | (e.g. minion OS version)      | (e.g. packages to install)          |
|                              |                               |                                     |

答案 3 :(得分:4)

Pillar也可用于确保只有某些小兵获得特定信息。

这里有一些很棒的文档:

http://docs.saltstack.com/topics/pillar/index.html

在这里:

http://docs.saltstack.com/topics/tutorials/pillar.html

您还可以使用External Pillar允许任意数据库或配置文件为您设置Pillar数据。这样可以与基础架构的其他方面进行非常强大的集成。 这里列出了几个内置的外部支柱:

http://docs.saltstack.com/ref/pillar/all/index.html

构建自定义外部支柱非常简单:

http://docs.saltstack.com/topics/development/external_pillars.html