手下をターゲットSaltStack - ミニオンターゲット位置決め方法ガイド

手先をターゲットに

手先の位置決め、手先ステータス状態を実行する管理コマンドまたはマッチングホスト名、システム情報、定義された基、または上記の条件も組み合わせによって実行されるべきかを指定します。

たとえば、コマンドはsalt web1 apache.signal restart、マシンのあるweb1上のApache httpdサービスを再起動することができ、およびコマンドは、この手先ことで実行されます。

同様に、米国、一番上のファイルのファイルのみを指定web1手先が実行すべきwebserver.sls内容を:

base:
  'web1':
    - webserver

シンプルな目標は、直接マッチング、グロブワイルドカードマッチング、正規表現正規表現とリストがあっても、すべてのユースケースをカバーし、それに加えて、より柔軟で強力なオプションがあることがあり、そのうちのいくつかのユースケースの多くをカバーすることができるようになります。

この情報は、誰もGitHubの上で閲覧することができます:手先をターゲット

粒でターゲッティング

システムは、属性の手下でターゲットを見つけることができるように内蔵塩穀物のインターフェイス。そのため、あなたは機能を実行するために、特定のオペレーティングシステムまたはカーネルの手下特定の機能を実行する呼び出すことができます。

塩は手下に呼び出しを完了するために穀物の値と一致するように穀物とグロブ表現を指定するには、-Gオプションを通過します。「OS:アーチ*」目標を定義するための構文は、グロブ表現に続いて、穀物のキーです。

salt -G 'os:Fedora' test.version

すべての手下たちは、それらの実行中のFedoraシステムは、trueを返します。

実行することができgrains.itemsます利用可能粒塩を参照するように機能しています:

salt '*' grains.items

穀物の知識手先の目標位置を使用して詳細については、こちらをご覧ください、あなたはこの見ることができるデータを

COMPOUNDターゲッティング

バージョン0.9.5で追加。

複数のインターフェースは、特定の最終目標手先実行コマンドの結合を決定するために使用することができます。あなたはこれらの目標の組み合わせを使用してか、またはことができます。ここでは良い例です。

salt -C 'G@os:Debian and webser* or E@db.*' test.version

この例では、IDの先頭はwebserとDBの開始時に任意の手先Debianシステム、または任意の手先を実行しているが一致するあります。

グロブのタイプマッチング部デフォルト値は、それが適切な文字、続いて使用することができる@他のタイプを使用するように指定シンボル。上記の例では、G@穀物の一致を表す一緒に使用され、E@一緒に正規表現を表します。webser*使用されていません、それはグロブであるので、シンボルのターゲット・タイプを示します。

複合ポジショニングの使用の詳細については、クリックしてくださいここに

ノードグループターゲッティング

バージョン0.9.5で追加。

いくつかのシナリオでは、コマンドを実行するために事前に定義されたグループの手下を使用すると、より便利になります。これは、することができノード・グループが完了するパケット。マスター・ノード・グループ・コンフィギュレーション・ファイルを許可する事前定義された標的化合物、速記式などの複雑な化合物を宣言しました。ここでは一例です。

nodegroups:
  group1: '[email protected],bar.domain.com,baz.domain.com and bl*.domain.com'
  group2: 'G@os:Debian and foo.domain.com'
  group3: 'G@os:Debian and N@group1'

詳細なターゲティング方法

塩や手下のグループに位置付け手先を実装するための多くの方法があります。

マッチング minion id

それぞれの手先には固有の識別子が必要です。手先が最初の起動時にデフォルトでは、それはそのFQDNとして識別子を選択します。手先によるIDの設定項目手先IDを指定しました。

ヒント:子分の子分IDは、公開鍵/秘密鍵を生成するために使用されているので、それが変更された場合手先が新しいホストと同じであるように手先のIDと手先のキーは、あなたは、新しいマスターキーを再受け入れなければなりません。

グロブ

塩デフォルトのマッチタイプは、シェルグロブスタイルの手先のidを周りに使用されます。また、これは状態状態トップファイルのファイルに適用されます。

注意:あなたは、ソルトを呼び出す前に、シェル拡張グロブを防ぐために、単一引用符で塩グロブコールの使用を含める必要があります。

すべての手先にマッチ:

salt '*' test.version

ものと一致するexample.netフィールド、またはいずれかのexample手下のドメインを:

salt '*.example.net' test.version
salt '*.example.*' test.version

すべての試合のexample.netドメイン名とは、遵守webN手下のルール(web1.example.netweb2.example.net ... webN.example.net):

salt 'web?.example.net' test.version

マッチweb1へのweb5手下:

salt 'web[1-5]' test.version

マッチweb1web3手下:

salt 'web[1,3]' test.version

マッチweb-xweb-yそしてweb-z手下:

salt 'web-[x-z]' test.version

注意:追加のターゲティング方法について、複合マッチャーの以前の導入のためのマニュアルを参照してください。

正規表現

あなたは手下に一致するようにPerl互換の正規表現を使用することができます。

マッチweb1-prodweb1-devel手下:

salt -E 'web1-(prod|devel)' test.version

トップファイルの状態で正規表現を使用するときは、マッチャーの最初のオプションの種類を指定する必要があります。以下の実施例は、上述した手先の中で実行されるwebserver.slsコンテンツ。

base:
  'web1-(prod|devel)':
  - match: pcre
  - webserver

LISTS

最も基本的なレベルでは、あなたは、単に直接手先のIDのリストを指定することができます。

salt -L 'web1,web2,web3' test.version

使用して穀物をターゲット

ミニオン粒は、データによって配置することができます。

たとえば、次のコマンドは、実行中のすべての一致するCentOS手下システム:

salt -G 'os:CentOS' test.version

すべてのマッチング操作64-bit CPUs手下の、マッチが返されますミニオンnum_cpus穀物の値を:

salt -G 'cpuarch:x86_64' grains.item num_cpus

加えて、粒子は、辞書にネスト粒子が各レベルに対して横断コロンで一致させることができる、グロブを一致させるために使用されてもよいです。例えば、以下はの名前と一致するec2_tagsホスト粒子、および穀物の値が呼び出されたenvironment辞書のキー、キーワードが含まproduction値を:

salt -G 'ec2_tags:environment:*production*'

重要:ビューの記事は?セキュア穀物のデータを使用してターゲットとしているターゲットの場所の安全関連データ情報のための穀物の使用を理解します。

柱を使用してターゲット

支援測位データは、柱の手下を使用することができます。これは、手先をターゲットに、より制御性と柔軟性を達成するのを助けることができます。

注意:柱の手下を使用して、開始位置は、次のコマンドを使用して、塩マスターの各ミニオンピラーのためのデータ・キャッシュを作成する必要がありますsalt'*'saltutil.refresh_pillarsalt'*'saltutil.sync_allまた、柱のデータキャッシュは動作highstate時に入力されます。柱データの変更は、この方法を動作させるために、上記のコマンドを実行して、キャッシュをリフレッシュするために必要とされた後に適切に配置。

例えば:

salt -I 'somekey:specialvalue' test.version

穀物などの値が一致する柱をグロブにネストすることができ、各レベルを横断するコロンを追加することです。一致する名前の持つ以下の例fooの柱の手下は、柱は、値のdict、dictの持つ名前でbarキーとその値baz初め:

salt -I 'foo:bar:baz*' test.version

注意:-Iと同等の--pillarコマンドライン上の柱のデータを指定するパラメータ。

サブネット/ IPアドレスのマッチング

私たちは、それが簡単にIPアドレスやサブネットアドレスを使用して手先に一致するようにします:

salt -S 192.168.40.20 test.version
salt -S 2001:db8::/64 test.version

注:-Sと同等の--ipcidrパラメータの種類は、表示サブネットまたはIPアドレスと一致します。

以下は、例えばマッチング規則マッチングのためにCIDRのIPを使用する複合体です。

salt -C '[email protected]/24 and G@os:Debian' test.version

でも、サブネット/ IPマッチングルールはでトップのファイルの状態で使用することができます:

'172.16.0.0/12':
   - match: ipcidr
   - internal

複合マッチャー

複合体は、非常に微細なマイクロターゲットの任意マッチング整合塩の使用を可能にします。デフォルトでは、ちょうどCLIと一致トップファイルドキュメントとして、グロブ試合を一致させることです。グロブ試合以外のものを使用するには、マッチングの前に文字列が続く次の表の適切な文字、追加@のシンボルを。

文字 マッチタイプ Altキー区切り文字?
G 穀物のグロブ Gの@のOS:Ubuntuの はい
L 手下のリスト [email protected]minion3.domain.comまたはBL * .domain.com ノー
ピラーグロブ I @ PDATA:foobarに はい
S サブネット/ IPアドレス [email protected] / 24または[email protected] ノー
R 範囲クラスター R@%foo.bar ノー
N ノード・グループ Nの@グループ1 ノー

そして、定期的なシンボルの使用に関連して、以下の3:

  • E、PCREミニオンID、例えば:E@web\d+\.(dev|qa|prod)\.loc
  • P、穀物PCRE、例えば:P@os:(RedHat|Fedora|CentOS)
  • J、柱PCRE、例えば:J@pdata:^(foo|bar)$

ブール関数を使用することができandorそしてnot構文はマッチングの複数に接続されています。

たとえば、次の文字列は、すべてのDebianの手下に一致し、そのホスト名にwebserv始まり、または任意の正規表現の持つweb-dc1-srv.*ホスト名に一致する手先を:

salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.version

上記の方法は、ときにファイルのトップファイルを一致させるために使用され続けています。

base:
  'webserv* and G@os:Debian or E@web-dc1-srv.*':
    - match: compound
    - webserver

バージョン2015.8.0の新。

手先がそのIDに基づいても可能である除外:

salt -C 'not web-dc1-srv' test.version

複雑なマッチング機能は、以前のバージョン2015.8.0でサポートされていないnotルールの先頭に代わって。代わりに、我々は次のように柔軟である必要があります。

salt -C '* and not G@kernel:Darwin' test.version
salt -C '* and not web-dc1-srv' test.version

PRECEDENCEマッチング

ブラケットとの一致は、文のグループ間の優先度を定義するために一緒に組み合わせられ得ます。

salt -C '( ms-1 or G@id:ms-3 ) and G@id:ms-3' test.version

注意:ブラケットとゴールの間に必要なスペースことに注意してください。このルールを守らないと、間違った測位結果をもたらすことができます!

ALTERNATE DELIMITERS

バージョン2015.8.0の新。

セパレータとしてキー(:)に基づいて結腸マッチング部。Altキー区切り文字列マッチャーテーブルに支持してはい代替セパレータを指定します。

これは、先頭と@整合パターンセパレータとの間に代替の区切り文字を指定することによって行われます。これは、次の場合にパターンの間違った解釈を回避します:

salt -C 'J|@foo|bar|^foo:bar$ or J!@gitrepo!https://github.com:example/project.git' test.ping

ノードグループ

複合ターゲットマッチング仕様宣言ノードのグループ化。複合ターゲットを用いて、一致させるため、前のセクションを参照します。

マスタープロファイルパラメータは、ノード・グループのノードパケットを定義します。以下は、/etc/salt/masterノードのグループ構成の例:

nodegroups:
  group1: '[email protected],bar.domain.com,baz.domain.com or bl*.domain.com'
  group2: 'G@os:Debian and foo.domain.com'
  group3: 'G@os:Debian and N@group1'
  group4:
    - 'G@foo:bar'
    - 'or'
    - 'G@foo:baz'

注:でGROUP1 L手先のリストを照合し、グループ2 G試合特定粒。詳細については、化合物のマッチングのドキュメントを参照してください。

塩の2017.7.0バージョンを起動すると、グループ名は、ダッシュを追加することができます。これは、使用量が塩の他の多くの分野と一致していることができます。例えば:

nodegroups:
  - group1: '[email protected],bar.domain.com,baz.domain.com or bl*.domain.com'

バージョン2015.8.0の新。

注:グループ3に示すように、パケットノード群は、他のノードを参照することができます。循環参照が表示されていないことを確認し、それ以外の場合は、エラーメッセージにつながります。

バージョン2015.8.0の新。

複合ノードパケットは、文字列または文字列値のリストであってもよいです。あなたは問題がある可能性がパターンの一部としてスペースを必要とする場合。CLI上のノードグループを一致させるには、使用して-Nコマンドラインオプションを:

salt -N group1 test.version

バージョン2019.2.0の新。

注:歴史的に、N@分類は、CLIのトップファイルまたは複合に合致するファイルを使用することができない、それだけでできるnodegroupsマスタ設定ファイルのパラメータを識別します。2019.2.0バージョンのように、この制限は存在しません。

ファイル内のノードセットトップファイルを一致させるには、それは行のノード・セットの名前の後ろに置かれていることを確認します- match:nodegroup

base:
  group1:
    - match: nodegroup
    - webserver

注:マスター設定ファイルを設定または変更するノードを追加するとき、あなたは完全にこれらの変更を認識するためにマスターノードを再起動する必要があります。機能の限られた数の標的-Nコマンドラインを使用して、例えば、再起動することなく使用することができます。

ミニオンIDのリストとして定義するノード・グループ

シンプルな手先のIDのリストは、伝統的に次のように定義されます

nodegroups:
  group1: L@host1,host2,host3

また、次を使用してリストを定義することができます。

nodegroups:
  group1:
    - host1
    - host2
    - host3

バージョン2016.11.0で追加。

バッチサイズ

-b(または--batch-size)オプションは、手下の指定された数の上でコマンドを実行できます。これは、百分率および限られた数の使用をサポートしています。

salt '*' -b 10 test.version

salt -G 'os:RedHat' --batch-size 25% apache.signal restart

これは、10人のtest.version対象の手下の試合の後、25%を実行しますos:RedHat手先にApacheを再起動すると、タスクが完了するまで続けました。これは、それが簡単にBSDファイアウォールの保守作業に鯉を使ってローリング再起動、Webサーバー、または塩のように動作します。

バッチシステムは、リターンコマンドが別の手先に伝達されるため、ターゲット150の手先10の全バッチサイズの場合、コマンドは10の手先、手先に送信され、実行されているウィンドウの手先を維持します。したがって、この作品は10の手先上で実行されています。

バージョン2016.3の新。

--batch-wait パラメータは、手先を待機する秒数を指定するために使用することができ手先に新しいコマンド、その後、返されました。

SECOレンジ

SECOの範囲は、クラスタのヤフーの開発と保守で保存されたメタデータに基づいています。

Range projectプロジェクトのアドレスは以下のとおりです。https://github.com/ytoolshed/range

範囲の詳細については:https://github.com/ytoolshed/range/wiki/

前提条件

ソルトレンジのサポートを使用するには、レンジ・サーバーを必要としています。レンジ・サーバーを設定すると、この文書の範囲外です。Apacheモジュールは、範囲のリリースに含まれます。

レンジ・サーバーを使用して、あなたはクラスタ化されたファイルを定義する必要があります。これらのファイルは、クラスタに含まれるホスト定義のためのYAMLで書かれています。次のようにファイルのYAMLの範囲を書くことについての完全なドキュメントは次のとおりです。

https://github.com/ytoolshed/range/wiki/"yamlfile"-module-file-spec

また、あなたは塩マスターでPythonセコ範囲ライブラリをインストールする必要があります。次のコマンドは、彼らが正しくインストールされているかどうかを確認できます。

python -c 'import seco.range'

あなたが任意のエラーを返さない場合は、塩マスターサーバーに正常にインストールすることを範囲を意味します。

塩の製造

マスター設定ファイルのホスト名とポートの範囲を設定することにより、塩マスターサーバーでの範囲のサポートを有効にする必要があります。

range_server: my.range.server.com:80

その後、マスターサーバーは、変更を有効にするために再起動する必要があります。

レンジでターゲッティング

クラスタを定義した後は、使用することができます-Rまたは--rangeそれらをターゲットにロゴ塩コマンドを使用します。

例えば、サーバが提供する範囲からYAMLファイルの以下の範囲を与えられました:

$ cat /etc/range/test.yaml
CLUSTER: host1..100.test.com
APPS:
  - frontend
  - backend
  - mysql

次のように一つは、host100に塩位置決めtest.comドメインホスト1を使用する場合があります。

salt --range %test:CLUSTER test.version

次のコマンドは、3つのホストにマッチしますfrontendbackendmysql

salt --range %test:APPS test.version

LOADABLEマッチャー

バージョンの新2019.2.0。
内部位置決めがで呼び出されたMatchersコードブロックの実現。2019.2.0リリースから、動的にマッチャをロードすることができます。新しいマッチャーを作成することはできませんが、既存のマッチャは変更したり、その機能の機能を拡張することができます。マッチャーの詳細については、ロード可能なのmatcherが

おすすめ

転載: blog.csdn.net/watermelonbig/article/details/91204382
おすすめ