Salt を使用した Junos OS 搭載デバイスへのソフトウェアのインストール
ジュニパーネットワークスでは、Salt を使用した Junos OS が動作するデバイスの管理をサポートしており、Junos の実行および状態モジュール(Salt 用)は、管理対象デバイス上で運用タスクや設定タスクを実行するための機能を定義します。実行機能とsalt.states.junos.install_os
状態機能を使用するとsalt.modules.junos.install_os
、Junos OSを実行するデバイスにソフトウェアをインストールできます。
以下のセクションでは、サポートされる導入シナリオ、一般的なインストールプロセスとオプション、VMホストのアップグレード、統合型ISSU(統合型インサービスソフトウェアアップグレード)、およびこれらの機能をサポートするデバイス上でのノンストップソフトウェアアップグレード(NSSU)などの特殊なアップグレードシナリオを含め、Saltを使用してJunos OSイメージをインストールする方法について説明します。
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
を含めてディレクトリを指定します。デバイスにイメージを収容するのに十分なストレージ領域があることを確認するために、パラメーターFalse
を に設定しない限りcleanfs
、junos.install_os
関数はイメージをコピーする前にターゲットデバイスでストレージのクリーンアップを自動的に実行します。
ソフトウェア・イメージがターゲット・デバイスにすでに存在する場合は、引数を に設定し、引数True
をno_copy
path
イメージ・ファイル名に設定します。イメージは、引数で指定されたremote_path
ディレクトリ、または省略した場合はremote_path
デフォルトの /var/tmp ディレクトリに存在する必要があります。
リモートURLからソフトウェアイメージをインストールするには、Junos OSを実行しているターゲットデバイスの観点から、引数をpath
URLに設定します。指定した URL からイメージがコピーされてインストールされ、引数remote_path
と引数は無視されますno-copy
。URL の形式の指定については、 Junos OS CLI コマンドでファイル名と URL を指定するための形式を参照してください。
実行関数と状態関数のパラメーターの完全な一覧については、以下を参照してください。
junos.install_os
実行機能と状態関数は、Junos PyEZinstall()
関数を使用してインストールを実行します。インストールの一部として実行される操作の詳細については、 Junos PyEZを使用してJunos OSを実行するデバイスにソフトウェアをインストールする のインストールプロセスの概要セクションを参照してください。
junos.install_os実行機能の使い方
salt.modules.junos.install_os
実行機能を使用すると、Junos OSを実行している1つ以上のデバイスにソフトウェアイメージをインストールできます。たとえば、次のコマンドは、指定したイメージをSaltマスターからターゲットデバイスの/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
インストールには時間がかかる場合があるため、このコマンドには、Salt がミニオンからの応答を待機する時間を増やすオプションが含まれています -t seconds
。そうしないと、ミニオンが応答を返す前にコマンドラインクライアントがタイムアウトする可能性があります。
状態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
タイムアウト値を増やすには、それぞれパラメーターとchecksum_timeout
パラメーターdev_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
VM ホストのアップグレードを実行するための引数をサポートしています。この引数が存在する場合、関数は RPC を使用して <request-vmhost-package-add>
インストールを実行します。
次の状態宣言は、デバイス上の 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 を実行する方法
Salt for Junos OSは、統合型インサービスソフトウェアアップグレード(統合型ISSU)またはノンストップソフトウェアアップグレード(NSSU)を、この機能をサポートし、必要な要件を満たすデバイス上で実行するためのサポートを提供します。統合型 ISSU および NSSU の詳細については、ご使用の製品のソフトウェア マニュアルを参照してください。
統合型ISSU機能により、コントロールプレーンを中断することなく、トラフィックの中断を最小限に抑えながら、2つの異なるJunos OSリリース間でアップグレードできます。この機能をサポートするデバイスで統合インサービスソフトウェアアップグレードを実行するには、 機能を使用しjunos.install_os
、 に設定しますissu
True
。
次の状態宣言では、関数は両方のルーティング エンジンで Junos OS をアップグレードし、junos.install_os
インストール プロセスの一環として新しいプライマリ ルーティング エンジン(以前の古いバックアップ ルーティング エンジン)を再起動します。インストールが成功した場合、 および all_re: False
引数は、reboot: True
新しいバックアップルーティングエンジン(以前のプライマリルーティングエンジン)である接続されたルーティングエンジンを再起動するようにデバイスに指示します。
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