Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos実行モジュールとState Saltモジュールについて

Junosの実行と状態のSalt モジュールを使用すると、アドホックコマンドを実行したり、Junos OSを実行しているデバイスで特定の状態を定義して適用したりできます。

Junos 実行および状態モジュールの概要

Salt は、システムの状態を宣言および適用し、管理対象デバイス上で操作タスクと設定タスクを実行できるようにする、構成管理およびリモート実行ツールです。Salt は、Python モジュールを使用してこれらのタスクを実行します。モジュールには、主に実行モジュールと状態モジュールの 2 種類があります。

Salt 実行モジュールは、Salt ミニオンで実行される Python モジュールです。これらは、ミニオンでタスクを実行できるようにする機能を定義します。Salt マスターでアドホック コマンドを実行して、指定された関数を実行して結果を返すようにターゲット ミニオンに指示できます。同様に、Salt 状態モジュールでは、ミニオンへの状態の適用を管理するために Salt 状態ファイルで使用される関数を定義します。

Salt インストールには、以下の実行モジュールと state モジュールが含まれており、Junos OS を実行しているデバイスを操作できます。

  • salt.modules.junos—Junos実行モジュール(Salt用)は、Junos OSを実行しているデバイスで運用タスクと設定タスクを実行できるようにする機能を定義します。たとえば、デバイス上で運用コマンドやRPCを実行したり、設定を変更したり、新しいソフトウェアイメージをインストールしたりできます。

  • salt.states.junos—Junos ステート モジュール(Salt 用)は、Junos OS を実行するデバイス上で特定のステートを宣言して適用するために、ソルトステート ファイルで使用できる機能を定義します。例えば、設定に特定のステートメントセットが含まれていることや、デバイスが特定の運用状態を反映していることを確認したい場合があります。Junos 状態関数は、同じ名前の Junos 実行関数を呼び出して、これらのタスクを実行します。

Salt が Junos プロキシ(Salt 用)を介して Junos OS を実行しているデバイスを管理している場合、関数を呼び出すと、Python モジュールはデバイス上で直接実行されません。プロキシ ミニオンは代わりに Junos PyEZ を使用して、管理対象デバイス上の NETCONF サーバにリモート プロシージャ コール(RPC)を送信し、要求されたタスクを実行します。複数のターゲットで関数を実行すると、Salt は異なるデバイスでタスクを並行して実行します。

表 1 は、Junos 実行モジュールと state モジュールで定義されている機能の一覧と、各機能の簡単な説明を示しています。 factsfacts_refresh、および ping 関数を除き、両方のモジュールで同じ関数が定義されています。

表 1:Junos 実行モジュールと状態モジュール関数

関数名

salt.modules.junos

salt.states.junos

形容

cli

Y

Y

CLI コマンドを実行し、指定された形式でコマンド出力を返します。

commit

Y

Y

ターゲット構成データベースにロードされた変更をコミットします。

commit_check

Y

Y

候補コンフィギュレーションに対して commit check 操作を行い、構文が正しいことを確認します。

diff

Y

Y

候補コンフィギュレーションと指定されたロールバックコンフィギュレーションの差を返します。

facts

Y

接続フェーズ中に収集されたデバイス ファクトを表示します。

facts_refresh

Y

ターゲット デバイスからデバイス ファクトをリロードし、Salt グレインに格納されているファクトを更新します。

file_copy

Y

Y

Salt マスターまたはプロキシ ミニオン サーバから Junos OS を実行しているデバイスにファイルをコピーします。

get_table

Y

Y

Junos PyEZ の表とビューを使用して、Junos OS を実行しているデバイスから運用データまたは設定データを取得します。

install_config

Y

Y

ターゲット構成データベースをロック、変更、コミット、およびロック解除します。

install_os

Y

Y

デバイスにJunos OSソフトウェアイメージをインストールします。

load

Y

Y

指定されたファイル内の設定データをターゲット設定データベースに読み込みます。

lock

Y

Y

候補コンフィギュレーションの排他ロックを要求します。

ping

Y

Junos OSを実行しているデバイスから指定されたターゲットにインターネット制御メッセージプロトコル(ICMP)pingを送信し、結果を表示します。

rollback

Y

Y

以前にコミットした設定に設定をロールバックし、コミットします。

rpc

Y

Y

ターゲットデバイスで指定されたRPCを実行します。

set_hostname

Y

Y

Junos OS を実行している管理対象デバイスのホスト名を設定し、変更をコミットします。

shutdown

Y

Y

Junos OS を実行しているデバイスを再起動またはシャットダウンします。

unlock

Y

Y

候補コンフィギュレーションの排他ロックを解除します。

zeroize

Y

Y

デバイスを工場出荷時のデフォルト設定に復元します。

Junos 実行機能の使用方法

Salt 実行モジュールを使用すると、1 つ以上のミニオンでアドホック タスクを実行できます。Salt マスター コマンド ラインから実行関数を呼び出すには、次の構文を使用します。

どこ:

  • arguments- 必須またはオプションの関数引数。

  • target- 関数を実行するミニオン。1 つのミニオンを指定したり、'*' を使用してすべてのミニオンをターゲットにしたり、ミニオンのグループをターゲットとする式を定義したり(たとえば、名前が router で始まるすべてのミニオンを含めるように'router*')できます。

  • module- 実行する関数を含む Salt 実行モジュールの名前。

  • function- 実行する関数の名前。

たとえば、すべてのミニオンへの接続をテストするには、 test モジュールの ping 関数を実行し、ターゲットに '*' を使用します。

Junos 実行関数を呼び出すには、 junos モジュールと目的の関数を指定します。たとえば、次のコマンドは、 cli 関数を呼び出して、ルーター 1 で show version 動作モード コマンドを実行します。

Salt マスター コマンド ラインでコマンドを実行すると、Salt は CLI 入力を PyYAML を介して渡し、適切な Python データ タイプとしてロードされるようにします。場合によっては、整数を受け取る引数、または整数に解析される文字列値を受け取る引数は、正しく解析されない可能性があります。これらの引数には、次のいずれかの方法を使用して値を指定できます。

  • バックスラッシュ ( \ ) を使用して、文字列値を囲む引用符をエスケープします。

  • 単一引用符を囲む場合は二重引用符を使用し、その逆も同様です。

  • --no-parse=param_name オプションを含めます。

たとえば、次のコマンドは、指定された時間にデバイスを再起動するようにスケジュールします。

以下のコマンドは、指定されたスロットのルーティングエンジンの情報を要求します。

Junos State 関数の使用方法

Junos状態モジュール機能は、Salt状態ファイルから呼び出すことができます。構文は関数によって異なります。関数を使用する前に、モジュールのドキュメントで適切な構文を確認してください。

状態関数の多くは、次の一般的な構造を使用します。

例えば、次のステート・ファイルでは、 junos.install_config 機能を使用して、指定されたテンプレートの構成をターゲット・デバイスに適用しています。

ただし、場合によっては、構造体の最初の行で関数の引数を指定できます。たとえば、 rpc 関数は、前の構文を使用するか、データ構造の最初の行として指定することで、RPC を提供できます。以下の状態ファイルは同等で、 rpc 関数を呼び出して ge-1/0/0 インターフェイスの情報を取得しますが、異なる方法を使用して RPC 引数を提供します。

ターゲットデバイスに状態を適用すると、指定されたインターフェイスに対して get-interface-information RPCが実行され、結果が返されます。Salt は簡潔な出力を端末に表示し、その出力をテキスト形式でプロキシ ミニオン サーバの /tmp/interface.log ファイルに保存します。