Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos OS コンポーネントの Salt について

概要 さまざまな Salt コンポーネントの概要、および Junos OS を実行するデバイスの管理に関連するコンポーネントについて理解します。

コンポーネントの概要

Salt を使用して Junos OS を実行しているデバイスを管理できます。 表 1 は、さまざまな Salt コンポーネントの概要を示しています。各コンポーネントについては、後のセクションで詳しく説明します。

表 1:塩の成分

コンポーネント

説明

塩マスター

1 つ以上のミニオンを管理するメインコントロールサーバー。

塩の手先

Salt でノード管理。

塩プロキシ

Salt マスターまたは別のサーバーで実行されるプロセスにより、Salt マスターは標準の salt-minion プロセスを実行しないデバイスをデバイス上で直接管理できます。

Salt マスターは、Junos プロキシ(Salt 用)を使用して、Junos OS を実行するデバイスを管理できます。

穀物

塩のミニオンに関する静的な情報や事実。

Salt は、デバイスに最初に接続すると、Junos OS を実行するデバイスからファクトを取得します。Junos OS ファクトは Salt 穀物に保存され、他の穀物と同じ方法でアクセスできます。

ミニオンに関連付けられたユーザー定義データで、そのデータにアクセスできます。

状態ファイル

Salt システムで使用され、特定のターゲットに適用できるデータ構造を定義します。たとえば、柱データまたはシステムの状態を定義するために使用できます。

トップ ファイル

デバイスのグループを、特定の環境内の Salt ステート ファイルにマッピングします。

実行モジュール

Salt マスター コマンド ラインのミニオンでアドホック タスクを実行できる実行機能を定義します。

Junos 実行モジュール(Salt 用)を使用すると、Junos OS を実行するデバイスで運用タスクと設定タスクを実行できます。

状態モジュール

ミニオンの望ましい状態を宣言して適用できる状態関数を定義します。

Junos ステート モジュール(Salt 用)は、Salt ステート ファイルで使用できる機能を提供し、Junos OS を実行するデバイスで特定の状態を宣言して適用できます。

Junos syslog エンジン

Junos OS を実行するデバイスから送信されたシステム ログ メッセージを監視し、イベント情報を抽出して Salt イベント バスで Salt 形式で公開します。

原子炉

Salt イベント バスで受信した特定のイベントに対して実行するアクションを定義できます。

以下の Salt コンポーネントは Salt ソフトウェアと統合されており、Junos OS を実行するデバイスの管理に使用されます。

Salt Master、Minions、Proxy Minions

Salt マスターは、1 つ以上のノードまたは Salt ミニオンを管理する主な制御サーバーです。Salt は通常、エージェントベースのアーキテクチャを使用し、管理ノードが Salt Minion プロセスを実行します。ネットワーク デバイスなど、デバイスによっては、Salt Minion プロセスをデバイス上で直接インストールして実行できない場合があります。このような場合、Salt はプロキシ ミニオンを使用して Salt ミニオンを直接実行できないが、別のプロトコル(NETCONF など)で管理できるデバイスを管理することをサポートしています。ミニオン(プロキシまたは通常)は、デバイスの管理に使用されるソフトウェア プロセスで、同じサーバー上で複数のプロセスを実行できます。プロキシ ミニオン プロセスは Salt マスター上でも別のサーバーでも実行でき、デフォルトでは常に管理ノードに接続されます。

Salt の標準的なインストールには Junos プロキシ モジュールが含まれており、Salt マスターは Salt プロキシ ミニオンを介して Junos OS を実行するデバイスを管理できます。Junos プロキシ ミニオン プロセスは Salt マスターまたは別のサーバーで実行でき、プロセスごとに約 40~100 MB の RAM が必要です。Junos OS を実行する管理対象デバイスごとに、1 つのプロキシ ミニオン プロセスが必要です。Junos プロキシは、Junos OS を実行するデバイスで運用タスクと設定タスクを実行できる実行および状態モジュールを提供します。

Junos プロキシ ミニオン サーバーには、Junos PyEZ ライブラリと Python yamlordereddictloader モジュールがjxmleaseインストールされている必要があります。Junos PyEZ は、Junos OS を実行するデバイスの管理と自動化を可能にする Python 向けのマイクロフレームワークです。Junos プロキシ ミニオンは、ZeroMQ イベント バスを使用して Salt マスターに接続し、Junos PyEZ を使用して Junos OS を実行するデバイスとの SSH を介して NETCONF セッションを確立します。このモジュールはjxmlease、XML を Python データ構造に、Python データ構造を XML に変換します。

穀物

穀物は塩マスターが手下について収集する静的なデータです。粒度データには、デバイスのモデル番号やシリアル番号など、システムに関するプロパティが含まれます。Salt マスターはコマンドを実行したり状態を強制したりするときに、穀物を使用して特定のミニオン グループをターゲットにすることができます。たとえば、特定のオペレーティング システムまたはバージョンを実行しているすべてのミニオンに状態を適用できます。

Junos プロキシ ミニオンは、Junos OS を実行するデバイスとの接続を確立すると、Junos OS のファクトを収集してきめ細かく保存します。Junos OS ファクトは、他の穀物と同じ方法でアクセスできます。

グレインを含む Junos OS を実行しているデバイスのグレインを junos_facts 表示するには、関数を実行します grains.items

Junos OSのファクトのみを表示したい場合は、粒度の高い項目だけを junos_facts リクエストできます。

または、実行モジュールから関数をfactsjunos実行することもできます。関数はjunos.facts、前のコマンドと同じデータを返します。

JunosプロキシミニオンがJunos OSを実行するデバイスに接続すると、デバイスファクトが取得され、キャッシュされます。ファクトを表示すると、キャッシュから提供されます。その結果、すでにキャッシュされたファクトの値が変更されても、Salt システムでは自動的に更新されません。デバイスからファクトを再ロードして表示するには、関数を junos.facts_refresh 呼び出します。

グレインを使用して、タスクを実行するミニオンのセットを改良できます。例えば、以下のコマンドは、デュアルルーティングエンジンを show chassis routing-engine 搭載したJunos OSを実行するデバイスでのみ コマンドを実行します。

Salt の柱システムでは、ミニオンに配布できるデータを定義できます。Salt の柱は、Salt マスター上で定義され、ミニオンがアクセスできるユーザー定義データの構造のようなツリー構造です。柱データは、設定データ、ユーザー定義変数、またはミニオンに関連する機密情報を定義する場合があります。ピラー トップ ファイル内の適切なターゲットに柱をマッピングすることで、ミニオンがアクセスできる柱データを制限できます。

ピラー データは単純な YAML ファイルで定義できますが、SQL などのデータベースに格納したり、データベースから取得したりすることもできます。既定では、ピラー データ ファイルは Salt マスターの /srv/pillar ディレクトリに保存されます。柱データの場所を変更するには、Salt マスター設定ファイルのパラメータを目的のディレクトリに設定 pillar_roots します。

Junos OSを実行するデバイスを管理する場合は、Junos OSを実行する特定のデバイスのホスト名と認証情報など、Junosプロキシのデータを定義する際に柱を使用します。次の柱ファイル例には、Junos OS を実行するデバイスの Junos プロキシ設定が含まれています。

一般的に /srv/pillar/top.sls にある Salt ピラー トップ ファイルは、ミニオンがアクセスできるピラー データを定義します。Junos OSを実行しているデバイスを管理する場合、柱の一番上のファイルは、Junos OSを実行する対応するデバイスのプロキシデータを含むJunosプロキシミニオンIDをピラーファイルにマッピングします。次の例では、上のファイルがプロキシミニオンIDルーター1をベース環境の ルーター1-proxy.sls ピラーファイルにマッピングしています。

機能を実行すると、ミニオンの柱データを pillar.items 表示できます。

Salt State(SLS)ファイル

SaLt State(SLS)ファイルは、Salt システムがさまざまな目的で使用するデータ構造を定義します。たとえば、柱データまたはシステムの状態を定義するために使用できます。Salt ステート ファイルはデフォルトで YAML 形式で書かれ、 .sls ファイル拡張子を使用します。Jinja 構文を使用してステート ファイルをサポートし、柔軟性を高めます。

Salt を使用すると、管理対象システムの設定を宣言的に処理できます。Junos ステート モジュール(Salt 用) salt.states.junosには、状態ファイルで使用できる機能が用意されており、Junos OS を実行するデバイスで特定の状態を宣言して適用できます。例えば、デバイス設定に特定のステートメントセットが含まれているか、デバイスに特定の動作状態が反映されるようにすることができます。

管理対象デバイスの状態を定義する SLS ファイルの一般的な構造は次のとおりですが、これはモジュールと機能によって異なります。

例えば、以下の状態ファイルでは、 機能を junos.install_config 使用して、指定されたテンプレート内の設定をJunos OSを実行するターゲットデバイスに適用します。

1 つ以上のターゲット デバイスに個別の状態を適用できます。例えば:

あるいは、Salt top ファイルを使用して、 ハイステートの実行中に 1 つ以上の状態をミニオンに適用することもできます。

特定のターゲットでハイステートを実行すると、Salt システムはそのターゲットに対してファイル内で設定されたすべての状態を top.sls 適用します。

Junos 状態モジュールの詳細については、「 Junos の実行と状態の Salt モジュールについて」を参照してください。

トップ ファイル

Salt を使用してデバイスを管理する場合、ミニオンをさまざまなカテゴリや環境にグループ化できます。デフォルトでは、すべてのミニオンは基本環境にありますが、開発環境または実稼働環境に他のミニオンを配置する場合があります。Salt top ファイル は、デバイスまたはデバイスのグループを、そのファイルに適用する必要がある状態ファイルと、指定された環境内でアクセスできるピラー データにマッピングします。デフォルトでは、上位ファイルは top.sls という名前で、Salt ステート ファイルを含むディレクトリ階層の最上位に存在します。

デフォルトでは、状態に使用されるトップ ファイルは /srv/salt/top.sls に存在します。以下の構文を使用して、ターゲットデバイスを特定の環境内の対応する状態ファイルにマッピングします。ファイルは常に環境を定義する base 必要があります。

たとえば、次の上位ファイルは、「ルーター」で始まるIDを持つ基本環境のすべてのミニオンに core.sls および common_config.sls 状態ファイルを適用します。

状態を適用するには、ハイステートを実行し、ターゲットデバイスを指定します。

同様に、一般的に /srv/pillar/top.sls にある Pillar top ファイルは、そのファイル内のデータへのアクセスが許可されているミニオンにピラー ファイルをマッピングします。Junos OSを実行しているデバイスを管理する場合、ピラートップファイルは、Junos OSを実行する対応するデバイスの柱データを含む状態ファイルにJunosプロキシミニオンIDをマッピングします。これは 、ピラー セクションで説明されています。

実行モジュールと状態モジュール

Salt は、システムの状態を宣言して適用し、管理対象デバイスで運用タスクと構成タスクを実行できる、構成管理およびリモート実行ツールです。Salt 実行モジュールは Salt ミニオン上で動作する Python モジュールです。これらの関数は、ミニオンでタスクを実行できる機能を定義します。特定の関数を実行して結果を返すようにターゲットのミニオンに指示する、Salt マスターでアドホック コマンドを実行できます。同様に、Salt ステート モジュールは、ミニオンに状態のアプリケーションを管理する機能を定義します。

たとえば、すべてのミニオンへの接続をテストするには、モジュールのping機能をtest実行し、ターゲットをすべてのミニオンを'*'示すように指定できます。

Salt インストールには Junos 実行モジュールとステート モジュールが含まれており、Junos OS を実行するデバイスで運用および設定タスクを実行したり、状態のアプリケーションを管理したりするための機能を定義します。Junos 実行および状態モジュールの使用の詳細については、「 Junos 実行および状態 Salt モジュールについて」を参照してください。

Junos Syslog エンジン、Salt Event Bus、Salt Reactor

Salt アーキテクチャはハイパフォーマンスなイベント バスを中心としており、デフォルトのメッセージとして ZeroMQ を使用し、Salt マスターとミニオン間の通信にイベント トランスポート メカニズムを使用します。コンポーネントはバスを介してメッセージを送信して通信し、外部イベントをバスにインジェクトできます。塩のマスターとそれぞれの塩のミニオンには、独自のイベントバスがあります。

イベント システムは、パブリッシュ/サブスクライブ(pub/sub)モデルを使用します。イベントはイベント バスで公開され、加入者は公開されたイベントをリッスンし、指示に基づいて対応します。たとえば、ミニオンで関数を実行すると、Salt マスターはジョブ イベントを公開し、一致するミニオンがジョブを実行し、ジョブの結果を含む return イベントをバスに発行します。Salt には、バス上で外部イベントを公開し、イベントに対応する方法が用意されており、Salt を使用してイベントをリアルタイムで監視および応答できます。

Salt エンジンは、Salt イベント バスでイベントをエクスポートまたはインポートできる外部システム プロセスです。Salt のインストールには、Salt サーバーに送信される Junos OS システム ログ(syslog)メッセージを監視し、Salt イベント バスで公開できる Junos syslog エンジン(Salt 用)が含まれています。有効にすると、Junos syslogエンジンは、Junos OSを実行する管理対象デバイスから、指定されたポートでsyslogイベントをリッスンします。Junos syslog エンジンは、イベントを受信すると、イベント情報を抽出して Salt フォーマットに変換し、Salt イベント バスで公開します。

以下の出力は、 UI_COMMIT_COMPLETED Junos OS を実行するデバイスから送信され、Junos syslog エンジンによって Salt イベント バスで公開されたサンプル イベントです。

Junos OS を実行するデバイスのイベントベースの状態管理には、Salt リアクタと組み合わせて Junos syslog エンジンを使用できます。Salt リアクタを使用すると、Salt イベント バス上のイベントに応じてアクションを実行できます。Salt リアクタ システムを有効にすると、Salt イベント バスが監視され、構成済みのルールに基づいてイベントに一致するアクションがトリガーされます。Salt Reactor システムを有効にするには、Salt マスター構成ファイルで オプションを設定 reactor し、イベント タグを 1 つ以上のリアクタ SLS ファイルに関連付けます。リアクタ ファイルは、イベント発生時に実行するアクションを定義します。

Junos syslog エンジンと Junos OS イベント用リアクタの作成の詳細については、以下を参照してください。