ソルトを使用して、Junos OSを実行しているデバイスにソフトウェアをインストールする
ジュニパーネットワークスは、Salt を使用して Junos OS を実行しているデバイスを管理するサポートを提供しており、Junos 実行および状態モジュール(Salt 用)は、管理対象デバイス上で運用および設定タスクを実行できる機能を定義します。 salt.modules.junos.install_os 実行機能と salt.states.junos.install_os ステート機能を使用すると、Junos OSを実行しているデバイスにソフトウェアをインストールできます。
以下のセクションでは、Salt を使用して Junos OS イメージをインストールする方法について説明します。サポートされる導入シナリオ、一般的なインストール プロセスとオプション、およびこれらの機能をサポートするデバイスでの VM ホストのアップグレード、統合型稼動中ソフトウェア アップグレード(統合型 ISSU)、ノンストップ ソフトウェア アップグレード(NSSU)などの特殊なアップグレード シナリオが含まれます。
junos.install_os機能の概要
junos.install_os機能を使用すると、次のシナリオで Junos OS を実行しているデバイスのソフトウェアを Salt で更新できます。
単一のルーティングエンジンを搭載したスタンドアロンデバイス
デュアルルーティングエンジンを搭載したスタンドアロンデバイス
非混合モード構成のEXシリーズバーチャルシャーシ
非混合モード構成のQFXシリーズバーチャルシャーシ
VM ホストをサポートするルーティング エンジンでの VM ホストのアップグレード
統合型ISSUやNSSUなど、なんらかの形式の インサービス 機能が有効になっている導入構成
ここでは、 junos.install_os 実行関数と状態関数の基本的な構文を示します。使用可能な関数パラメーターの完全なリストについては、その関数の API ドキュメントを参照してください。
salt.modules.junos.install_os実行関数の構文は次のとおりです。
salt 'target' junos.install_os 'path' no_copy=(False | True) remote_path='remote-path' reboot=(False | True)
salt.states.junos.install_os状態関数の構文は次のとおりです。
path:
junos.install_os:
- no_copy=(False | True)
- remote_path: 'remote-path'
- reboot: (False | True)
どこ:
no_copy=(False | True)—(オプション)Junos OSを実行しているデバイスにソフトウェアイメージをコピーするかどうかを指定します。既定値は False です。path—インストールするソフトウェア イメージへのパス。reboot=(False | True)—(オプション)ソフトウェアのインストール後にシステムを再起動するかどうかを指定します。既定値は False です。remote_path='remote-path'—(オプション)イメージのインストール元のターゲット デバイス上のディレクトリ。デフォルトは /var/tmp です。
表1 は、さまざまなソフトウェアパッケージの場所に必要なパラメータ設定の概要を示しています。
ソフトウェア パッケージの場所 |
|
|
|
|---|---|---|---|
ソルトマスター |
省略または設定 |
Salt マスター上のソフトウェア パッケージへのパス。パスは |
(オプション)パッケージのコピー先となるターゲット・デバイス上のディレクトリ。デフォルトは /var/tmp です。 |
プロキシ ミニオン サーバ |
省略または設定 |
プロキシ ミニオン サーバ上のソフトウェア パッケージへの絶対パス。 |
(オプション)パッケージのコピー先となるターゲット・デバイス上のディレクトリ。デフォルトは /var/tmp です。 |
ターゲット・デバイス |
を に設定 |
ソフトウェア パッケージのファイル名。 |
(オプション)インストールパッケージがすでに存在する必要があるターゲットデバイス上のディレクトリ。デフォルトは /var/tmp です。 |
URL (英語) |
– |
ソフトウェア・パッケージのインストール元である、Junos OSを実行しているターゲット・デバイスの視点からのURL。 |
– |
デフォルトでは、 junos.install_os 機能は、 path パラメータで指定されているSaltマスターまたはプロキシミニオンサーバー上のパスから、Junos OSを実行しているデバイス(非混合バーチャルシャーシ内の個々のデバイスまたはプライマリデバイス)の /var/tmp ディレクトリにソフトウェアイメージをコピーします。イメージを別のディレクトリにコピーするには、 remote_path 引数を指定してディレクトリを指定します。デバイスにイメージを格納するのに十分なストレージ・スペースがあることを確認するために、 junos.install_os 機能は、 cleanfs パラメーターを False に設定しない限り、イメージをコピーする前にターゲット・デバイスでストレージ・クリーンアップを自動的に実行します。
ソフトウェア・イメージがターゲット・デバイス上にすでに存在する場合は、 no_copy 引数を Trueに設定し、 path 引数にイメージ・ファイル名を設定します。イメージは、 remote_path 引数で指定されたディレクトリに存在するか、 remote_path 省略された場合はデフォルトの /var/tmp ディレクトリに存在する必要があります。
リモートURLからソフトウェアイメージをインストールするには、Junos OSを実行しているターゲットデバイスの観点から、 path 引数をURLに設定します。イメージは指定された URL からコピーされてインストールされ、 no-copy 引数と remote_path 引数は無視されます。URL の形式の指定については、 Junos OS CLI コマンドでのファイル名と URL の指定形式を参照してください。
実行関数と状態関数のパラメーターの完全な一覧については、以下を参照してください。
junos.install_os実行関数と state 関数は、Junos PyEZ install() 関数を使用してインストールを実行します。インストールの一部として実行される操作の詳細については、Junos PyEZを使用してJunosデバイスにソフトウェアをインストールするの「インストールプロセスの概要」セクションを参照してください。
junos.install_os実行機能の使い方
salt.modules.junos.install_os実行機能を使用すると、Junos OSを実行している1台以上のデバイスにソフトウェアイメージをインストールできます。たとえば、次のコマンドは、指定したイメージをSalt Masterからターゲットデバイスの/var/tmpディレクトリにコピーします。デバイスがパッケージをインストールし、再起動します。
saltuser@salt-master:~$ sudo salt -t 600 'router1' junos.install_os 'salt://images/jinstall-ppc-19.2R1.8-signed.tgz' reboot=True
router1:
----------
message:
Successfully installed and rebooted!
out:
True
インストールには時間がかかる場合があるため、このコマンドには -t seconds オプションが含まれており、Salt がミニオンからの応答を待つ時間を増やします。そうしないと、ミニオンが応答を返す前にコマンド ライン クライアントがタイムアウトする可能性があります。
junos.install_osステート機能の使用方法
salt.modules.junos.install_os状態機能を使用すると、管理対象デバイスが実行するイメージを指定できます。必要に応じて、状態を 1 つ以上のターゲットに適用するか、適切なミニオンの状態最上位ファイル内で参照できます。
次の状態ファイルは、ターゲット ミニオンが指定されたイメージを実行するようにします。
saltuser@salt-master:~$ cat /srv/salt/junos_install_os_ppc_19_2R1.sls
salt://images/jinstall-ppc-19.2R1.8-signed.tgz:
junos.install_os:
- reboot: True
状態が適用されると、Saltはローカルイメージ(この場合はSaltマスターの /srv/salt/images ディレクトリにあります)をターゲットデバイスの /var/tmp ディレクトリにコピーします。デバイスがイメージをインストールし、再起動します。
saltuser@salt-master:~$ sudo salt -t 600 'router1' state.apply junos_install_os_ppc_19_2R1
router1:
----------
ID: salt://images/jinstall-ppc-19.2R1.8-signed.tgz
Function: junos.install_os
Result: True
Comment:
Started: 21:51:58.488113
Duration: 441546.724 ms
Changes:
----------
message:
Successfully installed and rebooted!
out:
True
Summary for router1
------------
Succeeded: 1 (changed=1)
Failed: 0
------------
Total states run: 1
Total run time: 441.547 s
インストールには時間がかかる場合があるため、このコマンドには、Salt がミニオンからの応答を待つ時間を増やすための -t seconds オプションが含まれています。そうしないと、ミニオンが応答を返す前にコマンド ライン クライアントがタイムアウトする可能性があります。
タイムアウト値を指定する方法
junos.install_os機能は、NETCONFセッション上で操作を実行します。NETCONF RPC がタイムアウトするデフォルトの時間は 30 秒です。インストール プロセス中、この関数は、デバイスにパッケージをコピーしてインストールするときに RPC タイムアウト間隔を 1800 秒 (30 分) に、チェックサムを計算するときに 300 秒 (5 分) に増やします。場合によっては、インストール プロセスまたはチェックサムの計算がこれらの時間間隔を超えることがあります。
junos.install_os 関数の呼び出しでインストール プロセスとチェックサム計算のタイムアウト値を増やすには、dev_timeout パラメーターと checksum_timeout パラメーターをそれぞれ含め、適切な値に設定します。例えば:
salt://images/jinstall-ppc-19.2R1.8-signed.tgz
junos.install_os:
- checksum_timeout: 400
- dev_timeout: 2400
- reboot: True
no_copyパラメーターを省略するか、Falseに設定すると、junos.install_os機能は、ソフトウェアイメージをコピーする前に、ターゲットデバイスでストレージクリーンアップを自動的に実行します。これにより、画像に十分なスペースを確保できます。デフォルトでは、クリーンアップ操作は 300 秒後にタイムアウトします。この操作のデフォルトのタイムアウト値を変更するには、cleanfs_timeout パラメーターを操作の完了を待機する秒数に設定します。
salt://images/jinstall-ppc-19.2R1.8-signed.tgz
junos.install_os:
- cleanfs_timeout: 500
- reboot: True
Salt コマンド ライン クライアントがミニオンからの応答を待機するデフォルトの時間は 5 秒です。ただし、インストールプロセスにはかなりの時間がかかる場合があります。その結果、ミニオンが応答を返す前に、コマンド ライン クライアントがタイムアウトする可能性があります。例えば:
router1:
Minion did not return. [No response]
The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later, run the following command:
salt-run jobs.lookup_jid 20200520174528242061
その場合は、後でインストールの結果を確認できます。ただし、コマンドの実行時に結果を表示する場合は、コマンドに -t seconds オプションを含め、必要に応じてタイムアウト値を増やすことで、Salt がミニオンからの応答を待機する時間を増やすことができます。
saltuser@salt-master:~$ sudo salt -t 600 'router1' junos.install_os 'salt://images/jinstall-ppc-19.2R1.8-signed.tgz' reboot=True
router1:
----------
message:
Successfully installed and rebooted!
out:
True
VM ホストのアップグレードを実行する方法
VM ホストをサポートするルーティング エンジンを搭載したデバイスでは、Junos OS は Linux ベースのホスト(VM ホスト)上の仮想マシン(VM)として実行されます。ホストOSと互換性のあるJunos OSをアップグレードするVMホストのアップグレードには、VMホストインストールパッケージ(junos-vmhost-install-x.tgz)が必要で、<request-vmhost-package-add>RPCに対応するrequest vmhost software add運用モードコマンドを使用して実行されます。
junos.install_os 関数は、仮想マシン ホストのアップグレードを実行するための vmhost=True 引数をサポートしています。この引数が存在する場合、関数は <request-vmhost-package-add> RPC を使用してインストールを実行します。
以下の状態宣言は、デバイス上の Junos OS とホスト OS の両方をアップグレードします。
saltuser@salt-master:~$ cat /srv/salt/junos_install_os_vm_host.sls
salt://images/junos-vmhost-install-qfx-x86-64-18.1R1.9.tgz:
junos.install_os:
- remote_path: /var/tmp
- vmhost: True
- reboot: True
統合型ISSUまたはNSSUを実行する方法
Junos OS向けSalt は、統合型インサービスソフトウェアアップグレード(統合型ISSU)またはノンストップソフトウェアアップグレード(NSSU)を、機能をサポートし、必要な要件を満たすデバイスで実行するためのサポートを提供します。統合型 ISSU および NSSU の詳細については、お使いの製品のソフトウェア マニュアルを参照してください。
統合型ISSU機能により、コントロールプレーンを中断することなく、トラフィックの中断を最小限に抑えながら、2つの異なるJunos OSリリース間のアップグレードが可能になります。この機能をサポートするデバイスで統合インサービスソフトウェアアップグレードを実行するには、 junos.install_os 機能を使用し、 issu を Trueに設定します。
次の状態宣言では、 junos.install_os 関数が両方のルーティング エンジンのJunos OSをアップグレードし、インストール プロセスの一環として新しいプライマリ ルーティングエンジン(以前の古いバックアップ ルーティングエンジン)を再起動します。インストールが成功した場合、 reboot: True 引数と all_re: False 引数は、接続されたルーティングエンジン(新しいバックアップルーティングエンジン(以前の古いプライマリルーティングエンジン)を再起動するようにデバイスに指示します。
saltuser@salt-master:~$ cat /srv/salt/junos_install_os_issu.sls
salt://images/junos-install-mx-x86-64-17.2R1.13.tgz:
junos.install_os:
- remote_path: /var/tmp
- issu: True
- reboot: True
- all_re: False
NSSU機能により、ネットワークトラフィックの中断を最小限に抑えながら、冗長ルーティングエンジンを搭載したスイッチまたはバーチャルシャーシで稼働しているJunos OSソフトウェアをアップグレードできます。この機能をサポートするデバイスでノンストップのソフトウェアアップグレードを実行するには、 junos.install_os 機能を使用し、 nssu を Trueに設定します。例えば:
saltuser@salt-master:~$ cat /srv/salt/junos_install_os_nssu.sls
salt://images/jinstall-ex-4300–14.1X53-D44.3-domestic-signed.tgz:
junos.install_os:
- remote_path: /var/tmp
- nssu: True
- reboot: True
- all_re: False