Salt を使用して Junos OS を実行しているデバイスを再起動またはシャットダウンする
ジュニパーネットワークスは、Salt を使用して Junos OS を実行しているデバイスを管理するサポートを提供しており、Junos 実行および状態モジュール(Salt 用)は、管理対象デバイス上で運用および設定タスクを実行できる機能を定義します。 salt.modules.junos.shutdown 実行機能と salt.states.junos.shutdown ステート機能を使用すると、Salt を使用して、Junos OSを実行しているデバイスを再起動したり、電源を切ったりできます。
このトピックでは、Salt を使用して Junos OS を実行しているデバイスの再起動または電源オフを行う方法、遅延後に操作を実行する方法、または特定の時間に操作をスケジュールする方法について説明します。
junos.shutdown 関数の概要
junos.shutdown機能を使用して、Junos OSを実行しているデバイスで次の操作を要求できます。
即時のシステムの再起動またはシャットダウン
オプションの遅延を伴う再起動またはシャットダウン操作
特定の日時にスケジュールされた再起動またはシャットダウン操作
デフォルトでは、 junos.shutdown 機能は、デュアルルーティングエンジンまたはデュアルバーチャルシャーシ設定の場合、すべてのルーティングエンジンで要求された操作を実行します。 junos.shutdown 関数には、実行するアクションである 1 つの引数が必要です。 reboot または shutdown パラメーターのいずれかを明示的に含め、 True に設定する必要があります。
salt.modules.junos.shutdown実行関数の構文は次のとおりです。
salt 'target' junos.shutdown (reboot | shutdown)=True (in_min=minutes | at=\'time\')
salt.states.junos.shutdown状態関数の構文は次のとおりです。
id:
junos.shutdown:
- (reboot | shutdown): True
- at: 'time'
- in_min: minutes
どこ:
at=\'time\'—(オプション)操作をスケジュールする時間。id- ステート宣言のユーザ定義識別子。in_min=minutes—(オプション)再起動またはシャットダウン操作を遅延させる分数。(reboot | shutdown)=True- 実行する操作。rebootまたはshutdownパラメータのいずれかを明示的にTrueに設定して、それぞれデバイスを再起動するかシャットダウンするかを指定する必要があります。
junos.shutdown実行関数の使用方法
salt.modules.junos.shutdown実行機能を使用すると、Junos OSを実行している1つ以上のデバイスをSalt Masterコマンドラインから再起動または電源を切ることができます。
例えば、以下のコマンドは、ターゲット・デバイス上のすべてのルーティング・エンジンを即座に再起動します。
saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True
router1:
----------
message:
Successfully powered off/rebooted.
out:
True
同様に、次のコマンドはデバイスの電源を切ります。
saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown shutdown=True
router1:
----------
message:
Successfully powered off/rebooted.
out:
True
次のコマンドは、 os_family:junos グレインで一致するすべてのデバイスを直ちに再起動するため、Junos OSを実行しているすべての管理対象デバイスに操作を適用する場合に便利です。
saltuser@salt-master:~$ sudo salt -G 'os_family:junos' junos.shutdown reboot=True
router1:
----------
message:
Successfully powered off/rebooted.
out:
True
router2:
----------
message:
Successfully powered off/rebooted.
out:
True
junos.shutdown ステート関数の使用方法
Salt 状態ファイル内で salt.states.junos.shutdown 状態機能を使用して、Junos OS を実行している 1 つ以上のデバイスを再起動したり、電源を切断したりできます。
以下のステート・ファイルは、ステートが適用されるターゲット・デバイス上のすべてのルーティング・エンジンを直ちに再起動します。
saltuser@salt-master:~$ cat /srv/salt/junos_reboot.sls
Reboot all REs now:
junos.shutdown:
- reboot: True
状態をターゲットに適用すると、デバイスはすぐに操作を実行します。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_reboot.sls
router1:
----------
ID: Reboot all REs now
Function: junos.shutdown
Result: True
Comment:
Started: 21:54:51.158521
Duration: 1141.496 ms
Changes:
----------
message:
Successfully powered off/rebooted.
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 1.141 s
同様に、以下の状態ファイルはターゲット・デバイスの電源をオフにします。
saltuser@salt-master:~$ cat /srv/salt/junos_shutdown.sls
Shut down device running Junos OS:
junos.shutdown:
- shutdown: True
遅延して再起動またはシャットダウン操作を実行する方法
junos.shutdown 関数のデフォルト動作は、再起動またはシャットダウン操作をただちに実行することです。また、操作が実行される前に遅延を要求することもできます。
再起動またはシャットダウン操作を指定した分数だけ遅らせるには、オプションの in_min パラメーターを、Junos OSを実行しているターゲットデバイスが操作を実行する前に待機する分数に設定します。次のコマンドは、2 分以内にすべてのルーティング エンジンを再起動するよう要求します。
saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True in_min=2
router1:
----------
message:
Successfully powered off/rebooted.
out:
True
ターゲットデバイスは、システムにログインしているすべてのユーザーに、差し迫った再起動に関するメッセージをブロードキャストします。指定した時間が経過すると、システムが再起動します。
user@router1> *** System shutdown message from saltuser@router1 *** System going down in 2 minutes
指定した時刻に再起動またはシャットダウン操作を実行する方法
junos.shutdown 関数のデフォルト動作は、再起動またはシャットダウン操作をただちに実行することです。また、特定の日時に操作をスケジュールすることもできます。特定の時間に操作をスケジュールするには、次のいずれかの方法で指定できる文字列を受け取る at パラメーターを含めます。
now- ソフトウェアをただちに停止または再起動します。+minutes- 今から操作を実行するまでの分数。yymmddhhmm- 年、月、日、時、分で指定される、操作を実行する絶対時間。hh:mm- 24 時間制で指定される、操作を実行する現在の日の絶対時刻。
プロキシミニオンサーバーでは、shutdown=Trueを指定するときにatパラメータを使用するには、Junos PyEZ リリース2.3.0以降が必要です。
たとえば、次のソルト状態ファイルは、すべてのルーティングエンジンのシステムの再起動を当日の22:30にスケジュールします。
reboot:
junos.shutdown:
- reboot: True
- at: '22:30'
ターゲットに状態を適用すると、デバイスは指定された時間に再起動をスケジュールします。
saltuser@salt-master:~$ sudo salt 'router1' state.apply junos_reboot.sls
router1:
----------
ID: reboot
Function: junos.shutdown
Result: True
Comment:
Started: 17:23:27.368341
Duration: 173.988 ms
Changes:
----------
message:
Successfully powered off/rebooted.
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 173.988 ms
show system rebootコマンドで、デバイス上の保留中の再起動を表示できます。
saltuser@salt-master:~$ sudo salt 'router1' junos.cli 'show system reboot'
router1:
----------
message:
reboot requested by saltuser at Wed Jul 31 22:30:00 2019
[process id 2313]
out:
True
Salt マスター コマンド ラインで同じ操作を実行すると、Salt は CLI 入力を PyYAML を介して渡し、適切な Python データ タイプとしてロードされるようにします。この場合、at値が正しく解析されない可能性があります。at 引数で junos.shutdown 実行関数を使用するには、次のいずれかの方法を使用して値を指定できます。
saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at=\'22:30\' saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at="'22:30'" saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True "at='22:30'" saltuser@salt-master:~$ sudo salt 'router1' junos.shutdown reboot=True at="22:30" --no-parse=at