Salt を使用して Junos OS を実行するデバイスで運用コマンドを実行する
ジュニパーネットワークスは、Salt を使用して Junos OS を実行するデバイスの管理をサポートし、Junos の実行および状態モジュール(Salt の場合)は、管理対象デバイスで運用および設定タスクを実行できる機能を定義します。 salt.modules.junos.cli
実行機能と salt.states.junos.cli
状態機能により、Junos OSを実行するデバイスで動作モードコマンドを実行して、操作を実行したり、情報を取得したりできます。
以下のセクションでは、関数の使用方法、デバイスの応答の解析、出力形式の指定、出力ファイルへの保存の方法について説明します。
junos.cli 関数構文
実行関数の salt.modules.junos.cli
構文は次のとおりです。
salt 'target' junos.cli 'command' dest=dest format=format
状態関数は salt.states.junos.cli
、以下の構文をサポートしています。
command: junos.cli: - dest: dest - format: format
id: junos.cli: - name: command - dest: dest - format: format
どこ:
command
—例えばshow interfaces fxp0.0 terse
、Junos OSを実行するデバイス上で実行する動作モードコマンド。dest
—(オプション)コマンド出力が書き込まれるプロキシ ミニオン サーバー上の宛先ファイルのパス。ターゲットデバイスで絶対パスを指定しない場合、パスはトップレベルルート(/)ディレクトリを基準にしています。format
—(オプション)コマンド出力の形式。または を指定text
しますxml
。id
状態宣言のユーザー定義識別子。
junos.cli 実行機能を使用してコマンドを実行する方法
実行 salt.modules.junos.cli
機能により、Junos OS を実行するデバイスで CLI コマンドを実行できます。この関数には、実行するコマンドである引数が 1 つ必要です。操作が成功すると、コマンドは 、 を返 out: True
し、 message
キーには コマンド出力が含まれます。
例えば、以下のコマンドは、ターゲットデバイスで動作モードコマンドを実行 show system uptime
し、コマンド出力を標準出力に表示します。
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show system uptime' router1: ---------- message: Current time: 2019-07-23 11:04:18 PDT Time Source: NTP CLOCK System booted: 2019-07-01 07:03:56 PDT (3w1d 04:00 ago) Protocols started: 2019-07-01 07:07:27 PDT (3w1d 03:56 ago) Last configured: 2019-07-18 16:16:33 PDT (4d 18:47 ago) by saltuser 11:04AM up 22 days, 4 hrs, 0 users, load averages: 0.02, 0.05, 0.06 out: True
junos.cli 状態関数を使用してコマンドを実行する方法
Salt ステート ファイル内の salt.states.junos.cli
ステート機能を使用して、Junos OS を実行するデバイスで 1 つ以上の操作コマンドを実行できます。コマンドをデータ構造の 1 行目として定義することも、関数の引数リスト内で定義することもできます。同じ状態ファイル内で同じコマンドを複数回実行する必要がある場合は、引数リスト内で コマンドを定義する必要があります。
以下の状態ファイルでは、ステート機能を junos.cli
使用してターゲット デバイスで 2 つのコマンドを実行し、各コマンドの出力を別のファイルに保存します。この場合、グレインに id
格納されているプロキシ識別子が宛先ファイル名に含まれ、状態が複数のターゲットに適用されている場合に出力ファイルを識別します。
saltuser@salt-master:~$ cat /srv/salt/junos_cli.sls show system uptime: junos.cli: - dest: /var/log/salt/output/{{ grains['id'] }}_junos_system_uptime.txt show version: junos.cli: - dest: /var/log/salt/output/{{ grains['id'] }}_junos_show_version.txt
状態を適用すると、Salt マスターは標準出力でコマンド出力を表示し、プロキシ ミニオン サーバー上の対応する宛先ファイルに出力を保存します。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_cli router1: ---------- ID: show system uptime Function: junos.cli Result: True Comment: Started: 21:18:12.130459 Duration: 911.207 ms Changes: ---------- message: Current time: 2019-07-26 14:18:12 PDT Time Source: NTP CLOCK System booted: 2019-07-01 07:03:56 PDT (3w4d 07:14 ago) Protocols started: 2019-07-01 07:07:27 PDT (3w4d 07:10 ago) Last configured: 2019-07-24 10:17:34 PDT (2d 04:00 ago) by saltuser 2:18PM up 25 days, 7:14, 1 user, load averages: 0.09, 0.06, 0.07 out: True ---------- ID: show version Function: junos.cli Result: True Comment: Started: 21:18:13.041796 Duration: 968.359 ms Changes: ---------- 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 Summary for router1 ------------ Succeeded: 2 (changed=2) Failed: 0 ------------ Total states run: 2 Total run time: 1.880 s
saltuser@minion:~$ ls /var/log/salt/output router1_junos_show_version.txt router1_junos_system_uptime.txt
この状態が複数のターゲットに適用されている場合、定義されたファイル名が一意の識別子を参照するため、この場合、Salt はプロキシ ミニオン サーバー上の各ターゲットに対して異なる出力ファイルを生成します。
saltuser@salt-master:~$ sudo salt '*' state.apply junos_cli router1: ---------- ID: show system uptime Function: junos.cli ... router2: ---------- ID: show system uptime Function: junos.cli ...
saltuser@minion:~$ ls /var/log/salt/output router1_junos_show_version.txt router1_junos_system_uptime.txt router2_junos_show_version.txt router2_junos_system_uptime.txt
状態ファイルは、ファイル内で同じ状態識別子を複数回使用することはできません。そのため、設定を変更する前や後など、状態ファイルで同じコマンドを複数回実行する場合は、関数の引数リストで コマンドを定義する必要があります。例えば:
Get OSPF neighbor information: junos.cli: - name: show ospf neighbor - format: text Install OSPF config : junos.install_config: - name: salt://configs/junos_ospf_config.conf Get OSPF neighbor information after configuration changes: junos.cli: - name: show ospf neighbor - format: text
コマンド出力をファイルに保存する方法
関数を junos.cli
実行するときに、引数を含 dest
め、変換先ファイルのパスを指定することで、プロキシ ミニオン サーバー上のファイルに戻されたデータを保存できます。絶対パスを指定しない場合、パスはトップレベルルート(/)ディレクトリに対する相対パスになります。出力ファイルがターゲット名で既に存在する場合、新しいファイルは古いファイルを上書きします。
引数は dest
Salt コマンドの応答全体をファイルに保存しません。キーに message
含まれるコマンド出力のみを保存します。
以下のコマンドは、 コマンドからの出力を show system uptime
表示し、プロキシミニオンサーバー上の指定されたファイルに保存します。
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show system uptime' dest='/home/saltuser/cli_output.txt'
saltuser@minion:~$ ls cli_output.txt
コマンド出力の形式を指定する方法
デフォルトでは、この関数は junos.cli
標準出力で表示されるデータと、指定された場合に宛先ファイルに保存されたデータの両方のテキスト形式でコマンド出力を返します。XML 形式でデータを返することもできます。XML 形式を指定するには、引数を format
含め、値を に設定します xml
。
次のコマンドは、コマンドを show system uptime
実行し、データを XML として返します。標準的な出力では、要素は、各要素名を囲む従来のブラケットなしで階層に表示されます。
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show system uptime' format=xml dest=/home/saltuser/show-system-uptime.xml router1: ---------- message: ---------- system-uptime-information: ---------- current-time: ---------- date-time: 2019-07-29 15:38:21 PDT last-configured-time: ---------- date-time: 2019-07-24 10:17:34 PDT time-length: 5d 05:20 user: saltuser protocols-started-time: ---------- date-time: 2019-07-01 07:07:27 PDT time-length: 4w0d 08:30 system-booted-time: ---------- date-time: 2019-07-01 07:03:56 PDT time-length: 4w0d 08:34 time-source: NTP CLOCK uptime-information: ---------- active-user-count: 1 date-time: 3:38PM load-average-1: 0.04 load-average-15: 0.04 load-average-5: 0.05 up-time: 28 days, 8:34 out: True
プロキシ ミニオン サーバー上の宛先ファイルの出力には、Junos OS CLI で コマンドを実行 show system uptime | display xml
した場合に出力されるのと同じ Junos XML タグが表示されます。
saltuser@minion:~$ cat /home/saltuser/show-system-uptime.xml <system-uptime-information><current-time><date-time seconds="1564439901">2019-07-29 15:38:21 PDT</date-time></current-time><time-source> NTP CLOCK </time-source><system-booted-time><date-time seconds="1561989836">2019-07-01 07:03:56 PDT</date-time><time-length seconds="2450065">4w0d 08:34</time-length></system-booted-time><protocols-started-time><date-time seconds="1561990047">2019-07-01 07:07:27 PDT</date-time><time-length seconds="2449854">4w0d 08:30</time-length></protocols-started-time><last-configured-time><date-time seconds="1563988654">2019-07-24 10:17:34 PDT</date-time><time-length seconds="451247">5d 05:20</time-length><user>saltuser</user></last-configured-time><uptime-information><date-time seconds="1564439902"> 3:38PM </date-time><up-time seconds="2450096"> 28 days, 8:34 </up-time><active-user-count format="1 user"> 1 </active-user-count><load-average-1> 0.04 </load-average-1><load-average-5> 0.05 </load-average-5><load-average-15> 0.04 </load-average-15></uptime-information></system-uptime-information>