SaltStack-構成管理

構成管理は、SaltStackの最も重要な概念の1つです。これは、と呼ばれる再利用可能な構成テンプレートを作成するために使用されます。state。状態は、システムコンポーネントまたはアプリケーションを既知の構成にするために必要なすべてを記述します。

塩の状態

ソルト状態は、システムの特定の部分で再利用可能な構成です。状態は、単純なYAMLを使用して理解し、説明するのが簡単です。

ソルトステートを作成する

ソルトステートは簡単に作成できます。この章では、簡単な状態を作成しましょう。ディレクトリ「salt-vagrant-demo / saltstack / salt /」に移動し、という名前のファイルを作成しますsamples.sls その中に次の行を追加します。

samples.sls

install_network_packages:
   pkg.installed:
      - pkgs:
         - rsync
         - lftp
         - curl

ここで、ファイルを保存し、Saltマスターで次のコマンドを実行します。

root@saltmaster:/home/vagrant# salt 'minion1’ state.apply samples

ここにインストールしました rsync, lftp そして curl を通って pkg.installed ソルトミニオンでソルト状態を使用するモジュール、 minion1。正常に動作する場合は、以下のような応答が見られます。

それは以下を生成します output

minion1:
----------
   ID: install_network_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 08:08:48.612336
   Duration: 545.385 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 545.385 ms

ソルトステートを適用する

これで、「。sls」ファイルを使用して状態を作成し、具体的に呼び出すことで状態を適用しました。Saltには、と呼ばれるデフォルトの状態ファイルがあります。top.slsファイル。一番上のファイルは、複数の状態ファイルをソルトミニオンに適用するために使用されます。一番上のファイルは、状態を適用する場所を示しています。上手、States そしてその Top file 協力して、SaltStackの構成管理機能のコアを作成します。

ディレクトリに簡単なtop.slsファイルを作成しましょう saltstack/salt そして、以下を追加します。

top.sls

base:
  '*':
      - common
   'minion1':
      - samples

ここでは、 state、一般的に appliesall system 状態、 samples に適用されます minion1

次に、Saltマスターを実行し、以下に示すように状態を適用します。

root@saltmaster:/home/vagrant# salt '*' state.apply

それは以下を生成します output

minion1:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:33:35.642355
   Duration: 588.21 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 588.210 ms
minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:33:35.890331
   Duration: 602.79 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 602.790 ms

バッチサイズを適用

接続されているミニオンが多数ある場合は、一度に更新されるシステムの数を制限できます。それはを使用して実行されます–batch-size 以下に定義されているオプション。

root@saltmaster:/home/vagrant# salt --batch-size 5 '*' state.apply

それは以下を生成します output

Executing run on ['minion2', 'minion1']
jid:
   20170314094638482664
minion1:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:46:41.228519
   Duration: 582.24 ms
   Changes:

Summary for minion1
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 582.240 ms
retcode:
   0
jid:
   20170314094638482664
minion2:
----------
   ID: common_packages
   Function: pkg.installed
   Result: True
   Comment: All specified packages are already installed
   Started: 09:46:41.153609
   Duration: 605.235 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 605.235 ms
retcode:
   0

塩の状態関数

ソルト状態関数は、リモートシステムにアプリケーションをインストールして構成するために使用されます。ソルト状態関数を使用して「Vim」パッケージをインストールしましょう。

状態関数の作成と適用

ディレクトリ「salt-vagrant-demo / saltstack / salt / sample.sls」の下に「sample.sls」という名前のファイルを作成し、次を追加します-

sample.sls

install vim:
   pkg.installed:
      - name: vim

Vagrant環境が起動したら、salt masterを実行し、次のコマンドを実行してsample.slsを適用します。

root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample

それは以下を生成します output

minion2:
----------
   ID: install vim
   Function: pkg.installed
   Name: vim
   Result: True
   Comment: Package vim is installed
   Started: 15:07:45.752764
   Duration: 553.506 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 553.506 ms

これで、パッケージ「Vim」が追加されました。ここで、Saltテスト方法を使用してパッケージをテストしましょう。

塩状態試験

テストの実行は、状態に「test = True」オプションを追加することで必須になります。戻り情報には、適用される状態が黄色で表示され、結果は「なし」として報告されます。

次のコマンドを使用して、状態をテストします-

root@saltmaster:/home/vagrant# sudo salt 'minion2’ state.apply sample test = True

それは以下を生成します output

minion2:
----------
   ID: install vim
   Function: pkg.installed
   Name: vim
   Result: True
   Comment: Package vim is already installed
   Started: 15:07:45.752764
   Duration: 553.506 ms
   Changes:

Summary for minion2
------------
Succeeded: 1
Failed:    0
------------
Total states run:     1
Total run time: 553.506 ms

SaltStack─ピラーコンポーネント

ピラーは、ソルト状態を再利用可能にするために不可欠なコンポーネントです。これは、ターゲットを使用して割り当てられたミニオンの安全なデータを定義するために使用されます。ソルトピラーデータには、ポート、ファイルパス、構成パラメーター、パスワードなどの値が格納されます。

柱の構成ファイル

の構成 pillar_roots マスター設定ファイルの内容を以下に示します-

pillar_roots:
   base:
      - /srv/pillar

ここでは、ファイルは「/ srv / pillar」ディレクトリにあります。

/srv/pillar/top.slsにあるトップファイルの構造が次のようになっていることを考慮してください。

base:
   '*':
      - default

ここで、/ srv / pillar / default.slsにあるdefault.slsファイルに移動し、次のコードを追加します。

# Default pillar values
apache
git

ファイルを保存した後、ピラーを更新してすべての変更を更新します。

柱をリフレッシュする

次のコマンドを使用して、ピラーを更新できます。

root@saltmaster:/home/vagrant# salt '*' saltutil.refresh_pillar

上記のコマンドは、すべてのミニオンのソルトピラーデータを更新するために使用されます。

柱データの一覧表示

ピラーデータを一覧表示するには、以下のコマンドを使用できます。

root@saltmaster:/home/vagrant# salt '*' pillar.ls

それは以下を生成します output

minion2:
   - apache
   - git
minion1:
   - apache
   - git

柱アイテム

ピラーがセットアップされると、ピラーモジュールを介してミニオンでデータを表示できます。機能からアクセスできますpillar.items、これは以下に定義されています。

root@saltmaster:/home/vagrant# salt '*' pillar.items

それは以下を生成します output

minion2:
   ----------
   apache:
      httpd
   git:
      git
minion1:
   ----------
   apache:
      httpd
   git:
      git

SaltStack –コンポーネントを含める

「インクルード」コンポーネントは、複数の場所で同じ構成タスクを定義するために使用されます。実行は簡単です。状態ファイルの先頭に、次の形式を使用してインクルードを追加します-

include:
   - state file 1 
   - state file 2

ここに、 state file 1 そして state file 2含めるSLSファイルの名前です。を含める必要はありません.sls拡張。インクルードソルト状態は、現在のファイルの先頭に挿入されます。

サブディレクトリ内の状態ファイル

ドット(。)を使用してサブディレクトリ状態ファイルを含めることができます。ディレクトリ区切り文字として機能します。

include:
   - dir.sls1

穀物インターフェース

Grainsは、基盤となるシステムに関する情報を取得するために使用されるインターフェイスです。グレインは、オペレーティングシステム、ドメイン名、IPアドレス、カーネル、OSタイプ、メモリ、およびその他の多くのシステムプロパティについて収集されます。

グレインターゲティング

穀物データは、次のコードブロックで定義されているミニオンをターゲットにするときに使用できます。

root@saltmaster:/home/vagrant# salt -G 'os:Ubuntu' test.ping

それは以下を生成します output

minion1:
   True
minion2:
   True

穀物のリスト

粒子は、以下で定義されている「grains.ls」モジュールを使用して一覧表示できます。

root@saltmaster:/home/vagrant# salt '*' grains.ls

リストアイテム

Pillarと同様に、Grainsデータも「grains.items」を使用して一覧表示できます。

root@saltmaster:/home/vagrant# salt '*' grains.items