В Соляной системе есть зерна и столбы. Я понимаю, как я могу назначать пользовательские зерна, но когда лучше рассмотреть возможность использования столбов?
соляной стек: зерна против столбов
Ответы (4)
Фундаментальное отличие здесь заключается в том, что вы можете установить пользовательское зерно как врожденное свойство миньона, а не колонну, которая должна быть назначена миньону в какой-то момент.
Например, есть два практических способа назначить роль миньону: идентификатор миньона или использование пользовательских зерен. Затем вы можете сопоставить идентификатор миньона или пользовательские зерна внутри вашего файла 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
Вы НЕ МОЖЕТЕ сделать это со столбом. Хотя вы действительно можете нацеливаться с помощью столба, вам сначала нужен способ назначить столб своим миньонам (это должен быть идентификатор миньона или зерна, как указано выше). Подумайте о том, как бы вы назначили столб в верхнем файле столба, вам нужно назначить данные этого столба, используя врожденный атрибут миньона.
# pillar/top.sls
base:
'G@env:dev':
- match: compound
- dev_settings
'G@env:prod':
- match: compound
- prod_settings
Шаблон здесь заключается в том, что вы используете зерна (или идентификатор миньона) как минимальный способ установить тип/роль/окружение вашего миньона. После этого вы используете данные столба, чтобы передать ему все соответствующие подробные настройки.
match: pillar
теперь это возможно в соответствии с этим солевой документ
- person Mayur Rokade; 28.12.2014
match: pillar
, как эти столбы были назначены миньонам? Они должны быть назначены либо по имени миньона, имени хоста, либо по зернам.
- person akoumjian; 26.01.2016
В Salt зерна используются для неизменных аспектов вашего миньона, таких как процессор, память, местоположение, часовой пояс и т. д.
Столб — это список данных о мастере (в формате SLS), которые нужно раздать своим миньонам. Pillar позволяет вам устанавливать переменные, к которым миньоны могут получить доступ, например, параметр конфигурации базы данных.
Короче говоря, пользовательские static Grains, вероятно, являются худшей альтернативой, чем Pillars.
| 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) |
| | | |
Pillar также полезен для обеспечения того, чтобы только определенные миньоны получали определенный бит информации.
Здесь есть отличные документы:
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