Junos 実行およびステート Salt モジュールについて
概要 Junos 実行および状態 Salt モジュールを使用すると、アドホック コマンドを実行したり、Junos OS を実行するデバイス上で特定の状態を定義および適用したりできます。
Junos 実行および状態モジュールの概要
Salt は、システムの状態を宣言して適用し、管理対象デバイスで運用タスクと構成タスクを実行できる、構成管理およびリモート実行ツールです。Salt は Python モジュールを使用してこれらのタスクを実行します。モジュールの 2 つの主なタイプは、実行モジュールと状態モジュールです。
Salt 実行モジュールは Salt ミニオン上で動作する Python モジュールです。これらの関数は、ミニオンでタスクを実行できる機能を定義します。特定の関数を実行して結果を返すようにターゲットのミニオンに指示する、Salt マスターでアドホック コマンドを実行できます。同様に、Salt ステート モジュールは Salt ステート ファイルで使用される関数を定義し、ミニオンに状態のアプリケーションを管理します。
Salt インストールには、以下の実行モジュールとステート モジュールが含まれており、Junos OS を実行しているデバイスとやり取りできます。
salt.modules.junos
—Junos 実行モジュール(Salt 用)は、Junos OS を実行するデバイスで運用タスクと設定タスクを実行できる機能を定義します。たとえば、デバイスで運用コマンドまたは RPC を実行したり、設定を変更したり、新しいソフトウェア イメージをインストールすることができます。salt.states.junos
Junos ステート モジュール(Salt 用)は、Salt ステート ファイルで使用できる機能を定義し、Junos OS を実行するデバイス上で特定の状態を宣言および適用します。例えば、設定に特定のステートメントのセットが含まれているか、デバイスが特定の動作状態を反映していることを確認することができます。Junos 状態関数は、同じ名前の Junos 実行機能を呼び出して、これらのタスクを実行します。
Salt が Junos OS を実行しているデバイスを Junos プロキシ(Salt 用)で管理し、関数と呼ぶ場合、Python モジュールはデバイス上で直接実行されません。代わりに、プロキシ ミニオンは Junos PyEZ を使用してリモート プロシージャ コール(RPC)を管理対象デバイス上の NETCONF サーバーに送信し、要求されたタスクを実行します。この機能を複数のターゲットで実行すると、Salt は異なるデバイス上でタスクを並行して実行します。
表 1 は、Junos 実行および状態モジュールで定義された関数を示し、各関数の簡単な説明を示しています。、 、facts_refresh
および ping
関数をfacts
除き、同じ関数が両方のモジュールで定義されます。
関数名 |
salt.modules.junos |
salt.states.junos |
説明 |
---|---|---|---|
|
Y |
Y |
CLI コマンドを実行し、指定された形式でコマンド出力を返します。 |
|
Y |
Y |
ターゲットの構成データベースに読み込まれた変更をコミットします。 |
|
Y |
Y |
候補構成に |
|
Y |
Y |
候補コンフィギュレーションと指定されたロールバック・コンフィギュレーションの差を戻します。 |
|
Y |
– |
接続フェーズで収集されたデバイスファクトを表示します。 |
|
Y |
– |
ターゲット デバイスからデバイス ファクトを再読み込みし、Salt 穀物に格納されているファクトを更新します。 |
|
Y |
Y |
Salt マスターまたはプロキシ ミニオン サーバーから Junos OS を実行するデバイスにファイルをコピーします。 |
|
Y |
Y |
Junos PyEZ テーブルおよびビューを使用して、Junos OS を実行しているデバイスから運用データまたは設定データを取得します。 |
|
Y |
Y |
ターゲットの設定データベースをロック、変更、コミット、ロック解除します。 |
|
Y |
Y |
デバイスにJunos OSソフトウェアイメージをインストールします。 |
|
Y |
Y |
指定されたファイル内のコンフィギュレーション・データをターゲット・コンフィギュレーション・データベースに読み込みます。 |
|
Y |
Y |
候補構成に対して排他的ロックを要求します。 |
|
Y |
– |
Junos OSを実行しているデバイスからインターネット制御メッセージプロトコル(ICMP)pingを指定されたターゲットに送信し、結果を表示します。 |
|
Y |
Y |
設定を以前にコミットした設定にロールバックし、コミットします。 |
|
Y |
Y |
ターゲット デバイスで指定された RPC を実行します。 |
|
Y |
Y |
Junos OS を実行する管理対象デバイスのホスト名を設定し、変更をコミットします。 |
|
Y |
Y |
Junos OS を実行しているデバイスを再起動またはシャットダウンする。 |
|
Y |
Y |
候補コンフィギュレーションの排他ロックを解除します。 |
|
Y |
Y |
デバイスを工場出荷時のデフォルト設定に戻します。 |
Junos 実行機能の使用方法
Salt 実行モジュールを使用すると、1 つ以上のミニオンでアドホック タスクを実行できます。Salt マスター コマンド ラインから実行関数を呼び出すには、次の構文を使用します。
salt options 'target' module.function arguments
どこ:
arguments
-必須またはオプションの関数引数。target
機能を実行するミニオン。1 つのミニオンを指定したり、'*'
すべてのミニオンをターゲットにしたり、例えば、名前が でrouter
始まるすべてのミニオンを含めるために、'router*'
ミニオンのグループをターゲットにする式を定義することができます。module
実行する関数を含む Salt 実行モジュールの名前。function
実行する関数の名前。
たとえば、すべてのミニオンへの接続をテストするには、モジュールの機能をtest
実行し、ターゲットに使用'*'
ping
します。
saltuser@salt-master:~$ sudo salt '*' test.ping router1: True router2: True
Junos 実行機能を呼び出すには、モジュールと目的の関数を指定junos
します。例えば、以下のコマンドは、ルーター1で動作モードコマンドをshow version
実行する関数を呼び出しますcli
。
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show version' router1: ---------- message: Hostname: router1 Model: mx104 Junos: 18.4R1.8 JUNOS Base OS boot [18.4R1.8] JUNOS Base OS Software Suite [18.4R1.8] JUNOS Crypto Software Suite [18.4R1.8] JUNOS Packet Forwarding Engine Support (TRIO) [18.4R1.8] JUNOS Web Management [18.4R1.8] JUNOS Online Documentation [18.4R1.8] JUNOS SDN Software Suite [18.4R1.8] JUNOS Services Application Level Gateways [18.4R1.8] JUNOS Services COS [18.4R1.8] JUNOS Services Jflow Container package [18.4R1.8] JUNOS Services Stateful Firewall [18.4R1.8] JUNOS Services NAT [18.4R1.8] JUNOS Services RPM [18.4R1.8] JUNOS Services SOFTWIRE [18.4R1.8] JUNOS Services Captive Portal and Content Delivery Container package [18.4R1.8] JUNOS Macsec Software Suite [18.4R1.8] JUNOS Services Crypto [18.4R1.8] JUNOS Services IPSec [18.4R1.8] JUNOS DP Crypto Software Software Suite [18.4R1.8] JUNOS py-base-powerpc [18.4R1.8] JUNOS py-extensions-powerpc [18.4R1.8] JUNOS jsd [powerpc-18.4R1.8-jet-1] JUNOS Kernel Software Suite [18.4R1.8] JUNOS Routing Software Suite [18.4R1.8] out: True
Salt マスター コマンド ラインでコマンドを実行すると、Salt は CLI 入力を渡して PyYAML
、適切な Python データ タイプとして読み込まれるようにします。場合によっては、整数を受け取る引数や、整数を解析する文字列値を取得する引数が正しく解析されない場合があります。これらの引数に対して、以下のいずれかのメソッドを使用して値を指定できます。
バックスラッシュ(\)を使用して、文字列値の引用符をエスケープします。
二重引用符を使用して単一引用符を囲み、その逆も同様です。
オプションを
--no-parse=param_name
含めます。
例えば、以下のコマンドは、デバイスが特定の時刻に再起動するようにスケジュールします。
saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at=\'16:10\' saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True "at='16:10'" saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at="'16:10'" saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at='16:10' --no-parse=at saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at=\'+2\'
以下のコマンドは、指定されたスロットのルーティング エンジンの情報を要求します。
saltuser@salt-master:~$ sudo salt 'router1' junos.rpc get-route-engine-information slot=\'0\' saltuser@salt-master:~$ sudo salt 'router1' junos.rpc get-route-engine-information slot='0' --no-parse=slot
Junos 状態機能の使用方法
Salt ステート ファイルから Junos ステート モジュール関数を呼び出すことができます。構文は機能によって異なります。関数を使用する前に、モジュールのドキュメントで適切な構文を確認してください。
状態関数の多くは、以下の一般的な構造を使用しています。
State name: module.function: - param1: value1 - param2: value2
例えば、以下の状態ファイルは、 機能を junos.install_config
使用して、指定されたテンプレート内の設定をターゲットデバイスに適用します。
saltuser@salt-master:~$ cat /srv/salt/junos_bgp_config.sls Apply BGP configuration: junos.install_config: - name: salt://configs/junos-config-bgp-template.set - comment: Configuring BGP using Salt - diffs_file: /var/log/salt/output/{{ grains['id'] }}_junos_bgp_config_diff
ただし、場合によっては、構造体の 1 行目は、関数の引数を提供できます。例えば、 rpc
この関数は、前の構文を使用するか、データ構造の 1 行目として RPC を提供できます。以下の状態ファイルは、同等であり、ge-1/0/0 インターフェイスの情報を取得する関数を呼び出します rpc
が、さまざまなメソッドを使用して RPC 引数を提供します。
saltuser@salt-master:~$ cat /srv/salt/junos-rpc.sls Retrieve interface information: junos.rpc: - name: get-interface-information - interface_name: ge-1/0/0 - terse: True - dest: /tmp/interface.log - format: text
saltuser@salt-master:~$ cat /srv/salt/junos-rpc2.sls get-interface-information: junos.rpc: - interface_name: ge-1/0/0 - terse: True - dest: /tmp/interface.log - format: text
ターゲット デバイスに状態を適用すると、指定されたインターフェイスの RPC が get-interface-information
実行され、結果が返されます。Salt はターミナルに terse 出力を表示し、プロキシ ミニオン サーバーの /tmp/interface.log ファイルにテキスト形式で出力を保存します。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos-rpc2 router1: - ID: get-interface-information Function: junos.rpc Result: True Comment: Started: 20:56:46.669149 Duration: 871.23 ms Changes: - out: True rpc_reply: Interface Admin Link Proto Local Remote ge-0/0/0 up up ge-0/0/0.0 up up inet 192.0.2.2/24 multiservice Summary for router1 - Succeeded: 1 (changed=1) Failed: 0 - Total states run: 1 Total run time: 871.230 ms