サービスの改善にご協力お願いします。

お客様のご意見をお聞かせください。

アンケートの所要時間はおよそ 2 分です。

external-header-nav
keyboard_arrow_up
close
keyboard_arrow_left
Salt for Junos OS 開発者ガイド
Table of Contents Expand all
list Table of Contents

この機械翻訳はお役に立ちましたでしょうか?

starstarstarstarstar
Go to English page
免責事項:

このページは、サードパーティー製機械翻訳ソフトウェアを使用して翻訳されます。質の高い翻訳を提供するために合理的な対応はされていますが、ジュニパーネットワークスがその正確性を保証することはできかねます。この翻訳に含まれる情報の正確性について疑問が生じた場合は、英語版を参照してください. ダウンロード可能なPDF (英語版のみ).

Junos 実行およびステート Salt モジュールについて

date_range 18-Apr-21

概要 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.junosJunos ステート モジュール(Salt 用)は、Salt ステート ファイルで使用できる機能を定義し、Junos OS を実行するデバイス上で特定の状態を宣言および適用します。例えば、設定に特定のステートメントのセットが含まれているか、デバイスが特定の動作状態を反映していることを確認することができます。Junos 状態関数は、同じ名前の Junos 実行機能を呼び出して、これらのタスクを実行します。

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

表 1 は、Junos 実行および状態モジュールで定義された関数を示し、各関数の簡単な説明を示しています。、 、facts_refreshおよび ping 関数をfacts除き、同じ関数が両方のモジュールで定義されます。

表 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 マスター コマンド ラインから実行関数を呼び出すには、次の構文を使用します。

content_copy zoom_out_map
salt options 'target' module.function arguments

どこ:

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

  • target機能を実行するミニオン。1 つのミニオンを指定したり、'*'すべてのミニオンをターゲットにしたり、例えば、名前が でrouter始まるすべてのミニオンを含めるために、'router*'ミニオンのグループをターゲットにする式を定義することができます。

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

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

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

content_copy zoom_out_map
saltuser@salt-master:~$ sudo salt '*' test.ping
router1:
    True
router2:
    True

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

content_copy zoom_out_map
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 含めます。

例えば、以下のコマンドは、デバイスが特定の時刻に再起動するようにスケジュールします。

content_copy zoom_out_map
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\'

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

content_copy zoom_out_map
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 ステート モジュール関数を呼び出すことができます。構文は機能によって異なります。関数を使用する前に、モジュールのドキュメントで適切な構文を確認してください。

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

content_copy zoom_out_map
State name:
  module.function:
    - param1: value1
    - param2: value2

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

content_copy zoom_out_map
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 引数を提供します。

content_copy zoom_out_map
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
content_copy zoom_out_map
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 ファイルにテキスト形式で出力を保存します。

content_copy zoom_out_map
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
external-footer-nav