web-dev-qa-db-ja.com

塩スタック:穀物vs柱

塩系 には、穀物と柱があります。カスタムグレインを割り当てる方法は理解していますが、ピラーの使用を検討した方がよいのはいつですか?

32
Jeff Bauer

ここでの根本的な違いは、ある時点でミニオンに割り当てる必要があるピラーではなく、ミニオンの固有のプロパティとしてカスタムグレインを設定できることです。

たとえば、ミニオンに役割を割り当てるには、ミニオンIDを使用する方法とカスタムグレインを使用する方法の2つの実用的な方法があります。次のように、top.slsファイル内のミニオンIDまたはカスタムグレインと照合できます。

# 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)を使用することです。その後、ピラーデータを使用して、適切な詳細設定をすべてフィードします。

15
akoumjian

Saltでは、CPU、メモリ、場所、タイムゾーンなど、ミニオンのimmutableアスペクトにグレインが使用されます。

ピラーは、ミニオンに配布する必要があるマスター(SLS形式)のデータのリストです。 Pillarを使用すると、ミニオンがアクセスできる変数(データベース構成オプションなど)を設定できます。

28
Jeff Bauer

要するに、カスタム静的穀物は、おそらく柱よりも悪い選択肢です。

| 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)          |
|                              |                               |                                     |
15
uvsmtid

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

4
Utah_Dave