Saltstack-configuration-management
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 ファイルと呼ばれるデフォルトの状態ファイルがあります。 一番上のファイルは、複数の状態ファイルをソルトミニオンに適用するために使用されます。 一番上のファイルには、状態を適用する場所が記述されています。 さて、 States と Top 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