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、一般的に applies に all 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