Ansibleを使用してJunosデバイスにソフトウェアをインストールする
ジュニパーネットワークスのAnsibleモジュールを使用して、Junosデバイスにソフトウェアをインストールします。
Ansibleを使用したソフトウェアのインストール
ジュニパーネットワークスは、Junosデバイスへのソフトウェアイメージのインストールまたはアップグレードを可能にするAnsibleモジュールを提供します。 表 1 にモジュールの概要を示します。
コンテンツ セット |
モジュール名 |
---|---|
以下のセクションでは、Ansibleモジュールを使用してJunosデバイスにソフトウェア パッケージをインストールする場合のソフトウェア イメージの場所と一般的なソフトウェア インストール プロセスとオプションを指定する方法について説明します。また、VM ホストのアップグレード、統合型インサービス ソフトウェア アップグレード(統合型 ISSU)、ノンストップ ソフトウェア アップグレード(NSSU)など、これらの機能をサポートするデバイスで、より専門的なアップグレード シナリオを実行する方法についても説明します。
ソフトウェア イメージの場所を指定する方法
juniper.device.software
モジュールを使用してJunosデバイスにソフトウェアをインストールする場合、ソフトウェアパッケージをAnsible制御ノードにダウンロードできます。モジュールは、デフォルトでインストールを実行する前にパッケージをターゲットデバイスにコピーします。混在バーチャルシャーシ環境では、ソフトウェアパッケージがAnsible制御ノードに存在する必要があります。スタンドアロンデバイスまたは混在していないバーチャルシャーシ環境では、ターゲットJunosデバイスにすでに存在するソフトウェアイメージ、またはターゲットデバイスから到達可能なURLに存在するソフトウェアイメージをインストールするようにモジュールに指示することもできます。
表 2 は、ソフトウェア パッケージの場所に応じて設定する必要があるモジュール引数の概要を示しています。モジュールには、常に local_package
、 pkg_set
、または remote_package
引数のいずれかを含める必要があります。 no_copy
引数のデフォルトは false
で、Ansible制御ノード上の指定された場所からターゲットデバイスにソフトウェアパッケージをコピーするようにモジュールに指示します。
ソフトウェア パッケージの場所 |
|
|
|
---|---|---|---|
Ansible制御ノード |
省略するか、に設定 |
スタンドアロンデバイスまたは混在していないバーチャルシャーシ環境の場合:
|
(オプション)ソフトウェア・パッケージのコピー先となるターゲット・デバイス上のファイル・パス。デフォルトのディレクトリは /var/tmp です。
|
混在バーチャルシャーシ環境の場合:
|
– |
||
リモートロケーション |
– |
– |
ソフトウェア パッケージのインストール元のターゲットJunosデバイスから見たURL。 |
ターゲット・デバイス |
を に設定 |
– |
ソフトウェア・パッケージがすでに存在するターゲット・デバイス上のファイル・パス。デフォルトのディレクトリは /var/tmp です。 |
ソフトウェア パッケージが Ansible 制御ノードにある場合は、インストールに適した引数を含めます。
-
local_package
—スタンドアロンのJunosデバイスまたは混在していないバーチャルシャーシのメンバーにソフトウェアをインストールします。引数値は、ソフトウェアイメージへの絶対パスまたは相対パスを指定する単一の文字列です。 -
pkg_set
—混合バーチャルシャーシのメンバーにソフトウェアをインストールします。引数値は、さまざまなバーチャルシャーシメンバーのソフトウェアイメージの絶対または相対ファイルパスを順不同で指定する文字列のリストです。
例えば:
pkg_set: - 'software/jinstall-qfx-5-13.2X51-D35.3-domestic-signed.tgz' - 'software/jinstall-ex-4300-13.2X51-D35.3-domestic-signed.tgz'
デフォルトでは、 local_package
または pkg_set
引数を含めると、モジュールはAnsible制御ノードからターゲットJunosデバイス(個々のデバイスまたはバーチャルシャーシプライマリデバイス)の /var/tmp ディレクトリにソフトウェアパッケージをコピーします。 local_package
イメージを別のディレクトリにコピーする場合は、 remote_package
引数を定義し、ターゲットディレクトリを指定します。 remote_package
引数にファイル名が含まれる場合、 local_package
引数と remote_package
引数のファイル名は同一でなければならず、そうでない場合、モジュールはエラーを生成します。
ソフトウェア パッケージがターゲットの Junos デバイス(個々のデバイスまたはバーチャルシャーシプライマリ デバイス)にすでに存在する場合、モジュールには no_copy: true
引数と、ターゲット デバイス上の既存のソフトウェア パッケージへのファイル パスを指定する remote_package
引数を含める必要があります。 remote_package
ディレクトリを指定しない場合、デフォルトは /var/tmp です。
ソフトウェアパッケージがAnsible制御ノードまたはターゲットデバイス以外の場所にある場合、モジュールは remote_package
引数を含め、ソフトウェアパッケージの場所を指定する必要があります。 remote_package
の値は、ターゲット Junos デバイスの観点から見た URL です。使用できるURL形式については、 Junos OS CLIコマンドでファイル名とURLを指定するための形式を参照してください。
インストールプロセスの概要
Ansibleを使用してJunosデバイスにソフトウェア パッケージをインストールするには、 software
モジュールを実行し、必要な引数を指定します。例えば:
--- - name: Perform a Junos OS software upgrade hosts: dc1 connection: local gather_facts: no tasks: - name: Upgrade Junos OS juniper.device.software: local_package: "software/jinstall-ppc-17.3R1.10-signed.tgz" no_copy: false validate: true register: response - name: Print the response ansible.builtin.debug: var: response
software
モジュールを実行すると、以下の操作が実行されます。
ソフトウェア・パッケージがターゲット・デバイスにインストールされると、最初にダウンロードされたか、モジュールによってコピーされたかにかかわらず、モジュールは次の操作を実行します。
validate
引数がtrue
に設定されている場合に、新しいパッケージに対して設定を検証します。手記:デフォルトでは、
software
モジュールは、ソフトウェア パッケージを追加するための前提条件として、既存の設定に対してソフトウェア パッケージまたはバンドルを検証しません。アクティブな設定が新しいソフトウェア イメージで動作するようにするには、validate
引数をtrue
に設定します。all_re
がfalse
に設定されていない限り、個々のルーティングエンジンにパッケージをインストールします。reboot
引数がfalse
に設定されていない限り、アップグレードされた各ルーティングエンジンを再起動します。
software
モジュールでは、logfile
モジュール引数を含めることで、インストールの進行状況をログに記録できます。デフォルトでは、重大度レベルが WARNING 以上のメッセージのみがログに記録されます。一般的なインストール・プロセスのメッセージをログに記録するために必要な重大度レベル INFO 以上のメッセージをログに記録するには、-v
または --verbose
コマンドライン・オプションを使用して Playbook を実行します。
タイムアウト値を指定する方法
juniper.device.software
モジュールは、NETCONFセッション上で操作を実行します。NETCONF RPC がタイムアウトするデフォルトの時間は 30 秒です。インストール プロセス中に、特定の操作により、RPC タイムアウト間隔が次のように増加します。
-
デバイスへのパッケージのコピーとインストール:1800 秒(30 分)
-
チェックサムの計算 - 300 秒 (5 分)
-
ストレージ クリーンアップの実行—300 秒 (5 分)
場合によっては、インストール・プロセス、チェックサム計算、またはストレージ・クリーンアップが、これらの時間間隔を超えることがあります。これらの操作のタイムアウト値を変更するには、 install_timeout
、 checksum_timeout
、および cleanfs_timeout
引数を、モジュールの引数リストで必要な秒数に設定します。例えば:
- name: Upgrade Junos OS juniper.device.software: local_package: "software/jinstall-ppc-17.3R1.10-signed.tgz" validate: true install_timeout: 2000 checksum_timeout: 420 cleanfs_timeout: 600
同等のモジュール引数を持たないインストールオプションを指定する方法
juniper.device.software
モジュールを使用してデバイスにソフトウェアをインストールすると、モジュールは含まれているインストール引数に対して適切な RPC を呼び出します。たとえば、モジュールは、標準の Junos OS インストールでは <request-package-add>
RPC、VM ホストのアップグレードでは <request-vmhost-package-add>
RPC、統合型 ISSU シナリオでは <request-package-in-service-upgrade>
RPC などを呼び出します。
このモジュールは、 validate
オプションなど、多くのインストールオプションに対して明示的な引数をサポートしています。このモジュールは kwargs
引数もサポートしているため、RPC でサポートされているが同等のモジュール引数を持たない追加オプションを含めることができます。 kwargs
引数は、サポートされている追加のオプションのキーと値のペアの辞書を取ります。
モジュールでサポートされているオプションの現在のリストについては、モジュールの API リファレンス ドキュメントを参照してください。特定のRPCで利用可能なすべてのオプションのリストについては、同等のコマンドのドキュメントを参照するか、 Junos XML API ExplorerでRPCのリクエストタグを検索してください。
特定の RPC のターゲット Junos デバイスでサポートされているインストール オプションのみを含める必要があります。
次のプレイブックでは、software
モジュールがターゲットホストに新しいソフトウェアイメージをインストールします。このモジュールには、unlink: true
を含む kwargs
引数が含まれています。この引数は、アップグレードが成功した後にディレクトリからソフトウェア パッケージを削除するもので、<request-package-add>
RPC に <unlink/>
オプションを含めることと同じです。
--- - name: Perform a Junos OS software upgrade hosts: router1 connection: local gather_facts: no tasks: - name: Upgrade Junos OS juniper.device.software: local_package: "software/jinstall-ppc-17.3R1.10-signed.tgz" kwargs: unlink: true register: response - name: Print the response ansible.builtin.debug: var: response
VM ホストのアップグレードを実行する方法
VMホストをサポートするルーティングエンジンを搭載したデバイスでは、Junos OSはLinuxベースのホスト(VMホスト)上の仮想マシン(VM)として実行されます。VMホストのアップグレードには、VMホストインストールパッケージ(junos-vmhost-install-x.tgz)が必要で、ホストOSと互換性のあるJunos OSをアップグレードします。CLI では、<request-vmhost-package-add>
RPC に対応する request vmhost software add
動作モード コマンドを使用してアップグレードを実行します。
juniper.device.software
モジュールでは、VM ホストのアップグレードを実行するための vmhost: true
引数がサポートされています。引数が存在する場合、モジュールは <request-vmhost-package-add>
RPC を使用してインストールを実行します。
以下のプレイブックは、指定されたデバイス上の Junos OS とホスト OS をアップグレードして再起動します。
--- - name: Upgrade VM Hosts hosts: vm_hosts connection: local gather_facts: no tasks: - name: Perform a VM host upgrade juniper.device.software: local_package: "junos-vmhost-install-qfx-x86-64-18.1R1.9.tgz" vmhost: true register: response - name: Print the response ansible.builtin.debug: var: response
統合型 ISSU または NSSU を実行する方法
juniper.device.software
モジュールは、機能をサポートし、必要な要件を満たすデバイスでの統合型インサービスソフトウェアアップグレード(統合型ISSU)またはノンストップソフトウェアアップグレード(NSSU)の実行をサポートします。統合型ISSUおよびNSSU機能の詳細については、製品のソフトウェアマニュアルを参照してください。
統合型ISSU機能により、コントロールプレーンを中断することなく、トラフィックの中断を最小限に抑えながら、2つの異なるJunos OSリリース間のアップグレードが可能になります。統合インサービス ソフトウェア アップグレードを実行するには、 software
モジュールに issu: true
引数を含める必要があります。例えば:
--- - name: Perform a Junos OS software upgrade hosts: mx1 connection: local gather_facts: no tasks: - name: Perform a unified ISSU juniper.device.software: local_package: "junos-install-mx-x86-64-17.2R1.13.tgz" issu: true register: response - name: Print the response ansible.builtin.debug: var: response
NSSU機能により、ネットワークトラフィックの中断を最小限に抑えながら、冗長ルーティングエンジンを搭載したスイッチまたはバーチャルシャーシで稼働しているJunos OSソフトウェアをアップグレードできます。ノンストップ ソフトウェア アップグレードを実行するには、 software
モジュールに nssu: true
引数を含める必要があります。例えば:
--- - name: Perform a Junos OS software upgrade hosts: ex1 connection: local gather_facts: no tasks: - name: Perform an NSSU juniper.device.software: local_package: "jinstall-ex-4300–17.3R1.10-signed.tgz" nssu: true register: response - name: Print the response ansible.builtin.debug: var: response
EXシリーズ バーチャルシャーシ メンバーにソフトウェアをインストールする方法
通常、混在していないEXシリーズ バーチャルシャーシをアップグレードする場合、 インストール プロセスの概要 で説明されているインストール プロセスに従って、バーチャルシャーシ全体をアップグレードします。ただし、バーチャルシャーシ内の特定のメンバースイッチにソフトウェアをインストールする必要がある場合があります。 juniper.device
コレクションのリリース1.0.3以降、非混合EXシリーズバーチャルシャーシ内の個々のメンバースイッチにソフトウェアパッケージをインストールできます。
特定のメンバーにソフトウェアをインストールするには、 member_id
引数を含め、メンバー ID を指定する文字列のリストを定義します。システムは、バーチャルシャーシのプライマリデバイスから指定されたメンバーにソフトウェアパッケージをインストールします。
以下のAnsibleプレイブックは、EXシリーズバーチャルシャーシのメンバー0とメンバー1のソフトウェアをアップグレードします。
--- - name: Upgrade specific EX VC members hosts: ex_vc connection: local gather_facts: no vars: OS_version: "23.2R1.13" OS_package: "junos-install-ex-x86-64-23.2R1.13.tgz" pkg_dir: "software" log_dir: /var/log/ tasks: - name: Check NETCONF connectivity ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: 830 timeout: 5 - name: Install package on EX VC members juniper.device.software: version: "{{ OS_version }}" local_package: "{{ pkg_dir }}/{{ OS_package }}" member_id: ["0","1"] logfile: "{{ log_dir }}/software.log"
例:Ansibleを使用したソフトウェアのインストール
この例では、 juniper.device.software
モジュールを使用して、Junosデバイスにソフトウェアイメージをインストールします。
必要条件
この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。
-
Ansible 2.17 以降を実行し、
juniper.device
コレクションがインストールされた構成管理サーバー -
NETCONF が有効な Junos デバイスと、適切なパーミッションが設定されたユーザー アカウント
-
Ansible制御ノードとJunosデバイス上の適切なユーザー向けに設定されたSSH公開/秘密キーペア
-
必要なホストが定義された既存のAnsibleインベントリファイル
概要
この例では、 juniper.device.software
モジュールを使用して、指定されたインベントリグループ内のホストのJunos OSをアップグレードするAnsibleプレイブックを示します。この例では、ソフトウェアイメージはAnsible制御ノード上に存在し、モジュールはインストールする前にターゲットデバイスにイメージをコピーします。モジュールは host
引数を明示的に定義しないため、モジュールは {{ inventory_hostname }}
であるデフォルトのホストで動作します。
このプレイブックには Check NETCONF connectivity
タスクが含まれています。このタスクは、 ansible.builtin.wait_for
モジュールを使用して、デフォルトの NETCONF ポート 830 を使用して Junos デバイスとの NETCONF セッションの確立を試みます。プレイブックの実行中に制御ノードがデバイスとのNETCONFセッションの確立に失敗した場合、そのデバイスに対するプレイの残りのタスクはスキップされます。
Install Junos OS package
タスクは、NETCONF チェックが成功した場合、software
モジュールを実行します。version
引数は、Junos デバイス上の show version
コマンドによって報告される望ましいJunos OSバージョンを定義します。Playbook の実行中に、モジュールはまず、要求されたバージョンがデバイスにまだインストールされていないことを確認します。要求されたバージョンが現在インストールされているバージョンと異なる場合、モジュールは要求されたバージョンをインストールします。
local_package
引数は、Ansible制御ノード上のJunos OSソフトウェアパッケージのパスを定義します。インストール中に、モジュールはターゲットデバイス上でストレージクリーンアップ操作を実行し、ソフトウェアイメージをデバイスの/var/tmpディレクトリにコピーし、ファイルのチェックサムを検証し、新しいソフトウェアをアクティブな構成に対して検証してから、ターゲットホスト上の各ルーティングエンジンにソフトウェアをインストールします。デフォルトでは、software
モジュールはインストールの完了後にルーティングエンジンごとにリブートしますが、このタスクではわかりやすくするためにreboot: true
を明示的に設定します。
タスクは、モジュールの結果を response
変数に格納し、1 つのハンドラーに通知します。ユーザーがチェックモードを使用して Playbook を実行しない場合、 wait_reboot
ハンドラーはデバイスとのセッションを確立して、デバイスがオンラインに戻ったことを確認しようとします。 wait_time
変数は、制御ノードがデバイスへの再接続を試みる時間の長さを定義します。
この例では、インストールの進行状況を記録するための logfile
パラメーターが含まれています。これは、インストールに失敗した場合のデバッグ目的や、デバイスへのインストールの日時のログ記録のために重要です。プレイブックを実行するユーザーには、指定されたログファイルに書き込む権限が必要です。デフォルトでは、重大度レベルが WARNING 以上のメッセージのみがログに記録されます。この例では、Playbook は、インストールを監視するために重大度レベル INFO 以上のメッセージをログに記録する -v
オプションを指定して実行されます。
構成
Ansible Playbook の作成
juniper.device.software
モジュールを使用してJunosデバイスにソフトウェアイメージをインストールするプレイブックを作成するには、次の手順に従います。
-
Playbook の定型文と、モジュールをローカルで実行するこのプレイを含めます。
--- - name: Install Junos OS hosts: mx1 connection: local gather_facts: no
-
この例では、目的の Junos OS バージョンや新しいイメージへのパスなど、必要な変数を定義またはインポートします。
vars: OS_version: "23.4R1.9" OS_package: "junos-install-mx-x86-64-23.4R1.9.tgz" pkg_dir: "software" log_dir: "{{ playbook_dir }}" netconf_port: 830 wait_time: 3600
-
(オプション)NETCONFの接続を確認するタスクを作成します。
tasks: - name: Check NETCONF connectivity ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: 5
-
デバイスに Junos OS パッケージをインストールし、ハンドラーに通知するタスクを作成します。
- name: Install Junos OS package juniper.device.software: version: "{{ OS_version }}" local_package: "{{ pkg_dir }}/{{ OS_package }}" reboot: true validate: true logfile: "{{ log_dir }}/software.log" register: response notify: - wait_reboot
-
(オプション)モジュールの応答を出力するタスクを作成します。
- name: Print response ansible.builtin.debug: var: response
-
再起動後にデバイスがオンラインに戻ることを確認するハンドラーを作成します。
ハンドラー名は、インストール タスクで参照されているものと同じである必要があります。
handlers: - name: wait_reboot ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: "{{ wait_time }}" when: not response.check_mode
業績
Ansible制御ノードで、完了したプレイブックを確認します。プレイブックに目的のコードが表示されない場合は、この例の手順を繰り返してプレイブックを修正します。
--- - name: Install Junos OS hosts: mx1 connection: local gather_facts: no vars: OS_version: "23.4R1.9" OS_package: "junos-install-mx-x86-64-23.4R1.9.tgz" pkg_dir: "software" log_dir: "{{ playbook_dir }}" netconf_port: 830 wait_time: 3600 tasks: - name: Check NETCONF connectivity ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: 5 - name: Install Junos OS package juniper.device.software: version: "{{ OS_version }}" local_package: "{{ pkg_dir }}/{{ OS_package }}" reboot: true validate: true logfile: "{{ log_dir }}/software.log" register: response notify: - wait_reboot - name: Print response ansible.builtin.debug: var: response handlers: - name: wait_reboot ansible.builtin.wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: "{{ wait_time }}" when: not response.check_mode
プレイブックを実行する
Playbook を実行するには、次のようにします。
-
制御ノードで
ansible-playbook
コマンドを発行し、プレイブックのパスと必要なオプションを指定します。user@ansible-cn:~/ansible$ ansible-playbook -v ansible-pb-junos-install-os.yaml Using /etc/ansible/ansible.cfg as config file PLAY [Install Junos OS] **************************************************** TASK [Check NETCONF connectivity] ****************************************** ok: [mx1a.example.com] => {"changed": false, "elapsed": 0, "match_groupdict": {}, "match_groups": [], "path": null, "port": 830, "search_regex": null, "state": "started"} TASK [Install Junos OS package] ******************************************** changed: [mx1a.example.com] => {"changed": true, "check_mode": false, "msg": "Package /home/user/ansible/software/junos-install-mx-x86-64-23.4R1.9.tgz successfully installed. Response from device is: \nVerified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256\n [...output truncated...] NOTICE: 'pending' set will be activated at next reboot... Reboot successfully initiated. Reboot message: Shutdown NOW! [pid 79385]"} TASK [Print response] ****************************************************** ok: [mx1a.example.com] => { "response": { "changed": true, "check_mode": false, "failed": false, "msg": "Package /home/user/ansible/software/junos-install-mx-x86-64-23.4R1.9.tgz successfully installed. Response from device is: \nVerified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256\nVerified auto-snapshot signed by PackageProductionECP256_2023 method ECDSA256+SHA256\n [...output truncated...] NOTICE: 'pending' set will be activated at next reboot... Reboot successfully initiated. Reboot message: Shutdown NOW! [pid 79385]" } } RUNNING HANDLER [wait_reboot] ********************************************** ok: [mx1a.example.com] => {"changed": false, "elapsed": 250, "match_groupdict": {}, "match_groups": [], "path": null, "port": 830, "search_regex": null, "state": "started"} PLAY RECAP ***************************************************************** mx1a.example.com : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
検証
インストールの確認
目的
ソフトウェアのインストールが成功したことを確認します。
アクション
プレイブックの出力には、失敗したタスクが示される必要があります。ただし、インストールの詳細については、プレイブックで定義されているログファイルの内容を確認することもできます。ログ ファイル出力の例を次に示します。簡潔にするために、一部の出力は省略されています。
2024-08-23 22:20:49,455 - ncclient.transport.ssh - INFO - Connected (version 2.0, client OpenSSH_7.9) 2024-08-23 22:20:52,950 - ncclient.transport.ssh - INFO - Authentication (publickey) successful! ... 2024-08-23 22:21:00,770 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] computing checksum on local package: /home/user/ansible/software/junos-install-mx-x86-64-23.4R1.9.tgz 2024-08-23 22:21:08,070 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] cleaning filesystem ... ... 2024-08-23 22:21:08,329 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] before copy, computing checksum on remote package: /var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz ... 2024-08-23 22:21:08,491 - paramiko.transport - INFO - Connected (version 2.0, client OpenSSH_7.9) 2024-08-23 22:21:08,958 - paramiko.transport - INFO - Authentication (publickey) successful! 2024-08-23 22:21:16,846 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 363528192 / 3635202890 (10%) 2024-08-23 22:21:24,405 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 727056384 / 3635202890 (20%) 2024-08-23 22:21:31,966 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 1090568192 / 3635202890 (30%) 2024-08-23 22:21:39,652 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 1454096384 / 3635202890 (40%) 2024-08-23 22:21:47,631 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 1817608192 / 3635202890 (50%) 2024-08-23 22:21:55,343 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 2181136384 / 3635202890 (60%) 2024-08-23 22:22:02,878 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 2544648192 / 3635202890 (70%) 2024-08-23 22:22:11,395 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 2908176384 / 3635202890 (80%) 2024-08-23 22:22:19,949 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 3271688192 / 3635202890 (90%) 2024-08-23 22:22:27,522 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] b'junos-install-mx-x86-64-23.4R1.9.tgz': 3635202890 / 3635202890 (100%) 2024-08-23 22:22:27,533 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] after copy, computing checksum on remote package: /var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz ... 2024-08-23 22:22:44,891 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] checksum check passed. 2024-08-23 22:22:44,892 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] validating software against current config, please be patient ... ... 2024-08-23 22:27:52,538 - ncclient.transport.ssh - INFO - [host mx1a.example.com session-id 27526] Received message from host 2024-08-23 22:27:52,542 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] software validate package-result: 0 Output: Verified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256 Adding junos-mx-x86-64-23.4R1.9 ... ... Validating against /config/juniper.conf.gz mgd: commit complete Validation succeeded 2024-08-23 22:27:52,542 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] installing software on RE0 ... please be patient ... ... 2024-08-23 22:30:57,510 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] software pkgadd package-result: 0 Output: Verified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256 ... NOTICE: 'pending' set will be activated at next reboot... 2024-08-23 22:30:57,510 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] installing software on RE1 ... please be patient ... ... 2024-08-23 22:34:30,228 - jnpr.ansible_module.juniper.device.software - INFO - [mx1a.example.com] software pkgadd package-result: 0 Output: Pushing /var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz to re1:/var/tmp/junos-install-mx-x86-64-23.4R1.9.tgz Verified junos-install-mx-x86-64-23.4R1.9 signed by PackageProductionECP256_2023 method ECDSA256+SHA256 ... NOTICE: 'pending' set will be activated at next reboot... ... 2024-08-23 22:34:30,732 - ncclient.operations.rpc - INFO - [host mx1a.example.com session-id 27526] Requesting 'CloseSession'
意味
ログファイルの内容は、イメージが正常にコピーされ、ターゲットデバイス上の両方のルーティングエンジンにインストールされたことを示しています。