pila de sal: granos vs pilares


En el sistema de Sal hay granos y pilares. Entiendo cómo puedo asignar granos personalizados, pero ¿cuándo sería mejor considerar el uso de pilares?

Author: Simon A. Eugster, 2012-10-29

4 answers

La diferencia fundamental aquí es que puede establecer un grano personalizado como una propiedad innata de un esbirro, frente a un pilar que necesita ser asignado a un esbirro en algún momento.

Por ejemplo, hay dos formas prácticas de asignar un rol a un minion: el id de minion o el uso de granos personalizados. A continuación, puede coincidir con el id de esbirro o granos personalizados dentro de su parte superior.archivo sls así:

# 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

NO puedes hacer esto con pilar. Si bien puedes apuntar con pillar, primero necesitas una forma de asignar pilar a tus esbirros (esto debe ser id de esbirro, o granos como se indicó anteriormente). Piense en cómo asignaría pillar en el archivo pillar top, necesita asignar estos datos de pillar usando un atributo innato del minion.

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

El patrón aquí es que usa granos (o id de minion) como una forma mínima de establecer el tipo/rol/entorno de su minion. Después de eso, se utilizan los datos de pilar para alimentar a todos los ajustes detallados apropiados.

 15
Author: akoumjian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-28 20:52:42

En Salt, los granos se usan para aspectos inmutables de tu minion, como la cpu, la memoria, la ubicación, la zona horaria, etc.

Un pilar es una lista de datos en el maestro (en formato SLS) que necesita distribuir a sus minions. Pillar le permite establecer variables a las que los minions pueden acceder, por ejemplo, una opción de configuración de base de datos.

 24
Author: Jeff Bauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-29 04:12:52

En resumen, custom static Grains es probablemente peor alternativa que 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)          |
|                              |                               |                                     |
 13
Author: uvsmtid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-12 17:28:30

Pillar también es útil para asegurar que solo ciertos esbirros obtengan un poco de información en particular.

Hay algunos grandes documentos aquí:

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

Y aquí:

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

También puede usar un Pilar externo para permitir que una base de datos arbitraria o un archivo de configuración establezca sus datos de Pilar por usted. Esto permite una integración muy potente con otros aspectos de su infraestructura. Hay varios pilares externos construidos en la lista aquí:

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

Y es bastante sencillo construir un pilar externo personalizado:

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

 4
Author: Utah_Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-21 22:00:34