Saltstack-configuration-management

提供:Dev Guides
移動先:案内検索

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

ここでは、ソルトミニオン minion1 のソルト状態を使用して、 pkg.installed モジュールを介して rsync、lftp 、および curl をインストールしました。 適切に動作する場合、以下に示すような応答が表示されます。

次の 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 ファイルと呼ばれるデフォルトの状態ファイルがあります。 一番上のファイルは、複数の状態ファイルをソルトミニオンに適用するために使用されます。 一番上のファイルには、状態を適用する場所が記述されています。 さて、 StatesTop file は連携して、SaltStackの構成管理機能の中核を作成します。

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

*top.sls*
base:
  '*':
      - common
   'minion1':
      - 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

塩状態関数

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

状態関数の作成と適用

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

*sample.sls*
install vim:
   pkg.installed:
      - name: vim

Vagrant環境が起動したら、ソルトマスターを実行し、次のコマンドを実行して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」が追加されました。 ここで、ソルトテストメソッドを使用してパッケージをテストします。

塩状態試験

テストの実行は、状態に「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

ここで、状態ファイル1 *および*状態ファイル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.items」を使用してリストすることもできます。

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