В Солевой системе есть зерна и столбы. Я понимаю, как я могу назначить специальные зерна, но когда было бы лучше рассмотреть использование столпов?
Солонка: зерно против столбов
Ответ 1
Основное различие здесь заключается в том, что вы можете установить произвольное зерно в качестве врожденного свойства миньона, против столба, который в какой-то момент должен быть назначен миньону.
Например, существует два практических способа назначения роли миньону: идентификатор миньона или использование пользовательских зерен. Затем вы можете сопоставлять идентификатор миньона или пользовательские зерна внутри файла top.sls следующим образом:
# salt/top.sls
base:
# match against custom grain
'[email protected]:webserver':
- match: compound
- webserver
'[email protected]:search':
- match: compound
- elasticsearch
# match against minion id
'minion_db*':
- database
Вы НЕ МОЖЕТЕ сделать это с помощью столба. В то время как вы действительно можете нацелиться на столп, вам сначала нужен способ назначить столп своим миньонам (это должен быть миньон id или зерно, как указано выше). Подумайте о том, как назначить столп в верхнем файле столба, вам нужно назначить данные этого столбца с помощью врожденного атрибута миньона.
# pillar/top.sls
base:
'[email protected]:dev':
- match: compound
- dev_settings
'[email protected]:prod':
- match: compound
- prod_settings
Образец здесь состоит в том, что вы используете зерно (или миньон id) как минимальный способ установки типа/роли/среды вашего миньона. После этого вы используете данные столбцов для подачи всех необходимых подробных настроек.
Ответ 2
В Salt зерна используются для неизменных аспектов вашего миньона, таких как процессор, память, местоположение, часовой пояс и т.д.
Столбец - это список данных мастера (в формате SLS), который вам нужно распространять среди ваших миньонов. Pillar позволяет вам устанавливать переменные, к которым могут обращаться миньоны, например параметр конфигурации базы данных.
Ответ 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) |
| | | |
Ответ 4
Pillar также полезен для обеспечения того, чтобы только определенные миньоны получали определенный бит информации.
Здесь есть несколько замечательных документов:
http://docs.saltstack.com/topics/pillar/index.html
и здесь:
http://docs.saltstack.com/topics/tutorials/pillar.html
Вы также можете использовать внешний столбец, чтобы разрешить произвольной базе данных или конфигурационному файлу устанавливать для вас данные Pillar. Это позволяет очень эффективно интегрироваться с другими аспектами вашей инфраструктуры. Есть несколько встроенных внешних столбов, перечисленных здесь:
http://docs.saltstack.com/ref/pillar/all/index.html
И довольно просто создать пользовательский внешний стол:
http://docs.saltstack.com/topics/development/external_pillars.html