在Salt system中有谷物和柱子。我理解如何分配定制谷物,但何时考虑使用支柱会更好?
答案 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