在盐业系统有谷物和支柱。 我明白我怎么可以指定自定义的谷物,但它时,会更好地考虑使用支柱?
Answer 1:
这里最根本的区别是,你可以设置自定义粮为奴才的先天特性,对支柱这就需要在某个时候被分配到一个奴才。
例如,有将角色分配给奴才两个实际的方式:走狗ID或使用自定义的晶粒。 然后,您可以对阵附庸ID或自晶粒内的top.sls文件,如下所示:
# 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
你不能与支柱做到这一点。 虽然你的确可以与支柱的目标,首先需要一种方法来分配支柱,以你的爪牙(必须是奴才ID,或谷物如上所述)。 想想你将如何在立柱上的文件分配支柱,您需要使用走狗的固有属性来分配这一支柱数据。
# pillar/top.sls
base:
'G@env:dev':
- match: compound
- dev_settings
'G@env:prod':
- match: compound
- prod_settings
这里的模式是使用谷物(或仆从ID)作为最小的方式来设置你的仆从类型/角色/环境。 在此之后,您使用的支柱数据给它的所有合适的详细设置。
Answer 2:
盐,晶粒被用于你的仆从不可改变的方面,如CPU,内存,地点,时区等。
A柱的是,你需要分发到你的爪牙在主(以SLS格式)数据的列表。 支柱允许您设置的爪牙都可以访问,例如数据库配置选项变量。
Answer 3:
总之,自定义静态谷物比支柱可能更坏的选择。
| 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) |
| | | |
Answer 4:
柱,也是确保只有特定的爪牙获取信息的特定位是有用的。
这里有一些伟大的文档:
http://docs.saltstack.com/topics/pillar/index.html
和这里:
http://docs.saltstack.com/topics/tutorials/pillar.html
您也可以使用外部支柱允许任意数据库或配置文件设置您的支柱数据为您服务。 这使得与基础设施等方面非常强大的集成。 有几个建在这里列出的外部支柱:
http://docs.saltstack.com/ref/pillar/all/index.html
而且它是非常简单的建立一个自定义的外部支柱:
http://docs.saltstack.com/topics/development/external_pillars.html