Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Ansibleを使用してJunosデバイスにソフトウェアをインストールする

概要 Junos デバイスにソフトウェアをインストールするには、ジュニパーネットワークスの Ansible モジュールを使用します。

Ansibleを使用してソフトウェアをインストールする

ジュニパーネットワークスは、Ansibleを使用したJunosデバイスの管理をサポートし、デバイスにソフトウェアイメージをインストールまたはアップグレードできるモジュールを提供しています。 表 1 に、モジュールの概要を示します。

表1:ソフトウェアモジュール

コンテンツセット

モジュール名

juniper.device コレクション

software

Juniper.junos 役割

juniper_junos_software

メモ:

リリース 2.0.0 以降 Juniper.junosjuniper_junos_software モジュールはモジュールの機能を置き換えます junos_install_os

以下のセクションでは、モジュールを使用してJunosデバイスにソフトウェアパッケージをインストールする際に、ソフトウェアイメージの場所を指定する方法と、一般的なソフトウェアインストールプロセスとオプションについて説明します。また、VM ホストのアップグレード、統合型インサービス ソフトウェア アップグレード(統合型 ISSU)、またはノンストップ ソフトウェア アップグレード(NSSU)など、これらの機能をサポートするデバイス上で、より特殊なアップグレード シナリオを実行する方法についても説明します。

ソフトウェア イメージの場所を指定する方法

または juniper_junos_software モジュールを使用してsoftwareJunosデバイスにソフトウェアをインストールする場合、ソフトウェアパッケージをAnsible制御ノードにダウンロードできます。デフォルトでは、モジュールはインストールを実行する前にパッケージをターゲットデバイスにコピーします。バーチャルシャーシが混在する環境では、パッケージがAnsible制御ノードに存在する必要があります。スタンドアロン デバイスまたは混合されていないバーチャル シャーシ環境の場合は、ターゲット Junos デバイスにすでに存在するソフトウェア イメージや、ターゲット デバイスから到達可能な URL に存在するソフトウェア イメージをインストールするようにモジュールに指示することもできます。

表 2 は、ソフトウェア パッケージの場所に応じて設定する必要があるモジュール引数の概要を示しています。モジュールには、常に 、 local_packagepkg_setまたは remote_package 引数のいずれかを含める必要があります。引数のデフォルトfalseno_copy で、制御ノード上の指定された場所からターゲットデバイスにソフトウェアパッケージをコピーするようにモジュールに指示します。

表 2: ソフトウェア パッケージの場所のモジュール引数

ソフトウェア パッケージの場所

no_copy パラメーター

local_package または pkg_set [パラメーター]

remote_package パラメーター

Ansible制御ノード

省略または に設定 false

スタンドアロンデバイスまたは非混在バーチャルシャーシ環境の場合:

を、ローカル制御ノード上のソフトウェア パッケージのファイル パス(ファイル名を含む)に設定します local_package 。ファイル パスは、プレイブック ディレクトリに対する相対パスです。

(オプション)ソフトウェア パッケージのコピー先となるターゲット デバイス上のファイル パス。デフォルトのディレクトリは / var/tmp です。

ファイル名を含む場合は remote_package 、 で指定された local_packageファイル名と一致する必要があります。

バーチャルシャーシが混在する環境の場合:

を、ローカル制御ノード上の 1 つ以上のソフトウェア パッケージのファイル パス(ファイル名を含む)のリストに設定します pkg_set 。ファイル パスは、プレイブック ディレクトリに対する相対パスです。

リモートロケーション

ソフトウェア パッケージのインストール元の Junos デバイスから見た URL。

ターゲットデバイス

に設定: true

ソフトウェア パッケージが既に存在している必要があるターゲット デバイス上のファイル パス。デフォルトのディレクトリは / var/tmp です。

ソフトウェアパッケージがAnsible制御ノードに存在する場合、スタンドアロンJunosデバイスまたは非混合バーチャルシャーシのメンバーにソフトウェアをインストールするための引数を含める local_package か、混合バーチャルシャーシのメンバーにソフトウェアをインストールするための引数を含め pkg_set ます。module 引数は、ローカル制御ノード上のソフトウェア パッケージへの絶対または相対ファイル パスを指定します。

引数は local_package 、ソフトウェア イメージのパスを指定する 1 つの文字列です。引数には pkg_set 、さまざまなバーチャルシャーシメンバーに必要なソフトウェアイメージパスを順不同で指定する文字列のリストが含まれています。例えば:

デフォルトでは、 または 引数を含めるlocal_packageと、モジュールはターゲットJunosデバイス(個々のデバイスまたはpkg_setバーチャルシャーシプライマリデバイス)の/var/tmpディレクトリにソフトウェアパッケージをコピーします。イメージを別のディレクトリにコピーするlocal_package場合は、引数を定義しremote_package、ターゲット ディレクトリを指定します。引数にremote_packageファイル名が含まれている場合、引数とlocal_packageremote_package引数のファイル名は同じでなければならず、一致しないとモジュールでエラーが発生します。

ソフトウェア パッケージがターゲット Junos デバイスにすでに存在する場合、モジュールには、ターゲット デバイス上の既存のソフトウェア パッケージへのファイル パスを指定する引数remote_packageと 引数を含める必要がありますno_copy: Trueremote_packageディレクトリを指定しない場合、デフォルトは /var/tmp です。

ソフトウェア・パッケージがAnsible制御ノードまたはターゲット・デバイス以外の場所にある場合、モジュールには引数を含め remote_package 、ソフトウェア・パッケージの場所を指定する必要があります。の値は remote_package 、ターゲットのJunosデバイスから見たURLです。使用できる URL 形式については、 Junos OS CLI コマンドでファイル名と URL を指定するための形式を参照してください。

インストール プロセスの概要

Ansibleを使用してJunosデバイスにソフトウェア パッケージをインストールするには、 または juniper_junos_software モジュールを実行しsoftware、必要な引数を指定します。例えば:

またはjuniper_junos_softwareモジュールsoftwareを実行すると、次の操作が実行されます。

  1. 引数で指定された version Junos OS のバージョン、または引数を省略した場合はversionソフトウェア パッケージ ファイル名で指定された Junos OS バージョンを、管理対象デバイスにインストールされているバージョンと比較します。インストールされているバージョンと必要なバージョンが同一である場合、モジュールは残りのインストール手順をスキップし、 と failed falseを に設定しますchanged
  2. ソフトウェア パッケージが Ansible 制御ノードにあり、パラメーターがno_copy省略されているか False に設定されている場合、モジュールは次の操作を実行します。
    • ローカルソフトウェアパッケージのチェックサムが、引数で指定されたchecksum_algorithmアルゴリズムを使用して計算されます(チェックサムがまだ引数にchecksum指定されていない場合)。許容checksum_algorithm値はmd5sha1sha256です。デフォルトmd5は です。

    • ターゲット・デバイスでストレージのクリーンアップを実行して、 引数が に設定されていないfalse限りcleanfs、ソフトウェア パッケージ用の領域を作成します。

    • SCPまたはFTPは、すべてのパッケージをターゲットデバイスにコピーします。

      モジュールに が含まれている場合local_package、パッケージは ディレクトリにコピーされます。また、指定されていない場合は remote_package /var/tmp ディレクトリにコピーremote_packageされます(同じ名前とチェックサムを持つファイルがデバイス上のターゲットの場所にまだ存在しない場合)。モジュールpkg_setに が含まれている場合、パッケージは常にバーチャルシャーシプライマリデバイスの/var/tmpディレクトリにコピーされます。

      メモ:

      引数を cleanfs 省略するか、 に設定すると、ストレージのクリーンアップ操作によって既存のファイルが削除されるため、ターゲットの場所にすでに存在する場合でも、 trueモジュールはソフトウェア パッケージをデバイスにコピーします。 cleanfs: false が存在し、ファイルが既にターゲットの場所に存在する場合、モジュールはファイル コピー操作をスキップします。

    • 各リモート・ファイルのチェックサムを計算し、ローカル・ファイルの値と比較します。

ソフトウェア パッケージがターゲット デバイスにインストールされると、最初にダウンロードされたか、モジュールによってコピーされたかにかかわらず、モジュールは次の操作を実行します。

  1. パラメーターtruevalidate に設定されている場合、新しいパッケージに対して構成を検証します。

    メモ:

    デフォルトでは、 および juniper_junos_software モジュールは、ソフトウェア パッケージを追加するための前提条件として、software既存の設定に対してソフトウェア パッケージまたはバンドルを検証しません。アクティブなコンフィギュレーションが新しいソフトウェア イメージで動作するようにするには、引数を validate に設定しますtrue

  2. に設定されていないfalse限りall_re、個々のルーティング エンジンに パッケージをインストールします。

  3. 引数が に設定されていないfalse限りreboot、アップグレードされた各ルーティング エンジンを再起動します。

および software juniper_junos_software モジュールを使用すると、module 引数を含めるlogfileことで、インストールの進行状況をログに記録できます。デフォルトでは、重大度レベルが WARNING 以上のメッセージのみがログに記録されます。一般的なインストール プロセスのメッセージをログに記録するために必要な重大度レベル INFO 以上のメッセージをログに記録するには、または--verboseコマンド ライン オプションを使用して-vプレイブックを実行します。

タイムアウト値を指定する方法

ジュニパーネットワークスのソフトウェアモジュールは、NETCONFセッションを介して操作を実行します。NETCONF RPCがタイムアウトするデフォルトの時間は30秒です。インストール プロセス中に、特定の操作によって RPC タイムアウト間隔が次のように増加します。

  • デバイスへのパッケージのコピーとインストール:1800 秒(30 分)

  • チェックサムの計算 - 300 秒 (5 分)

  • ストレージのクリーンアップの実行:300 秒 (5 分)

場合によっては、インストール プロセス、チェックサム計算、または記憶域のクリーンアップがこれらの時間間隔を超えることがあります。これらの操作のタイムアウト値を変更するには、checksum_timeoutcleanfs_timeoutおよび 引数をinstall_timeoutモジュールの引数リストで必要な秒数に設定します。例えば:

同等のモジュール引数を持たないインストール オプションを指定する方法

または モジュールを使用してsoftwareデバイスにソフトウェアをインストールする場合、モジュールは、指定されたインストール引数に対して適切な RPC を呼び出します(たとえば、標準 Junos OS インストールの場合は RPC、VM ホスト アップグレードの場合は RPC、<request-package-add> <request-vmhost-package-add> <request-package-in-service-upgrade>統合 ISSU シナリオの場合は RPCなど)。juniper_junos_softwareモジュールは、多くのインストール オプション (オプション など) validate の明示的な引数をサポートします。モジュールは引数kwargsもサポートしているため、RPC でサポートされているが、同等のモジュール引数を持たない追加オプションを含めることができます。引数はkwargs、サポートされている追加のオプションのキーと値のペアのディクショナリを取ります。

モジュールでサポートされているオプションの現在のリストについては、そのモジュールの API リファレンス ドキュメントを参照してください。特定のRPCで使用可能なすべてのオプションのリストについては、同等のコマンドのドキュメントを参照するか、 Junos XML APIエクスプローラーでRPCのリクエストタグを検索してください。

メモ:

モジュールには、ターゲット Junos デバイスでサポートされているインストール オプションのみを含める必要があります。

次のプレイブックでは、softwareモジュールはターゲット ホストに新しいソフトウェア イメージをインストールします。モジュールには、 kwargs を持つunlink: True引数が含まれています。アップグレードが成功した後にディレクトリからソフトウェア パッケージを削除するこの引数は、RPC に <request-package-add> オプションを含める<unlink/>ことと同じです。

VM ホストのアップグレードを実行する方法

VMホストに対応したルーティングエンジンを搭載したデバイスでは、Junos OSはLinuxベースのホスト(VMホスト)上で仮想マシン(VM)として動作します。ホストOSおよび互換性のあるJunos OSをアップグレードするVMホストのアップグレードには、VMホストインストールパッケージ(junos-vmhost-install-x.tgz)が必要であり、RPCに対応する request vmhost software add <request-vmhost-package-add> 運用モードコマンドを使用して実行されます。

および juniper_junos_software モジュールはsoftwarevmhost: TrueVM ホストのアップグレードを実行するための引数をサポートしています。引数が存在する場合、モジュールは RPC を使用して<request-vmhost-package-add>インストールを実行します。

次のプレイブックは、デバイスのJunos OSとホストOSをアップグレードして再起動します。

統合 ISSU または NSSU を実行する方法

およびjuniper_junos_softwareモジュールはsoftware、機能をサポートし、必要な要件を満たすデバイスでの、統合型インサービスソフトウェアアップグレード(統合型ISSU)またはノンストップソフトウェアアップグレード(NSSU)の実行をサポートします。統合 ISSU および NSSU 機能の詳細については、製品のソフトウェア マニュアルを参照してください。

統合型ISSU機能により、コントロールプレーンを中断することなく、トラフィックの中断を最小限に抑えながら、2つの異なるJunos OSリリース間でアップグレードできます。統合されたインサービスソフトウェアアップグレードを実行するには、またはjuniper_junos_softwareモジュールにsoftware引数を含めるissu: True必要があります。例えば:

NSSU機能を使用すると、ネットワークトラフィックの中断を最小限に抑えながら、スイッチまたはバーチャルシャーシで実行されているJunos OSソフトウェアを冗長ルーティングエンジンでアップグレードできます。ノンストップ ソフトウェア アップグレードを実行するには、or juniper_junos_software モジュールに software 引数を含めるnssu: True必要があります。例えば:

例: Ansible を使用したソフトウェアのインストール

この例では、コレクション内のモジュールを使用して softwarejuniper.device Junos デバイスにソフトウェア イメージをインストールします。

要件

この例では、以下のハードウェアとソフトウェアのコンポーネントを使用しています。

  • コレクションがインストールされた Ansible 2.10 以降 juniper.device を実行している構成管理サーバー

  • NETCONFが有効で、適切な権限で設定されたユーザーアカウントを備えたJunosデバイス

  • Ansible制御ノードとJunosデバイスで適切なユーザーに対して構成されたSSH公開/秘密鍵のペア

  • 必要なホストが定義されている既存のAnsibleインベントリ ファイル

概要

この例では、モジュールを使用して software 、指定されたインベントリ グループ内のホスト上のJunos OSをアップグレードするAnsibleプレイブックを示します。この例では、ソフトウェアイメージはAnsible制御ノード上に存在し、モジュールはインストールする前にイメージをターゲットデバイスにコピーします。モジュールは引数を host 明示的に定義しないため、モジュールはデフォルトのホスト(つまり {{ inventory_hostname }})で動作します。

このプレイブックには、 Checking NETCONF connectivity モジュールを利用して wait_for 、デフォルトのNETCONFポート830を使用してJunosデバイスとのNETCONFセッションの確立を試みるタスクが含まれています。コントロールノードがプレイブックの実行中にデバイスとの NETCONF セッションの確立に失敗した場合、そのデバイスのプレイ内の残りのタスクはスキップされます。

タスクは Install Junos OS packagesoftware NETCONF チェックが成功した場合にモジュールを実行します。引数は version 、Junos デバイス上の コマンドによって show version 報告される希望の Junos OS バージョンを定義します。プレイブックの実行中に、モジュールはまず、要求されたバージョンがデバイスにまだインストールされていないことを確認します。要求されたバージョンが現在インストールされているバージョンと異なる場合、モジュールは要求されたバージョンをインストールします。

引数は local_package 、Ansible制御ノード上のJunos OSソフトウェアパッケージのパスを定義します。インストール中、モジュールはターゲットデバイス上でストレージのクリーンアップ操作を実行し、ソフトウェアイメージをデバイスの/ var/tmp ディレクトリにコピーし、ファイルのチェックサムを検証し、アクティブな設定に対して新しいソフトウェアを検証してから、ターゲットホストの各ルーティングエンジンにソフトウェアをインストールします。デフォルトでは、 software モジュールはインストールの完了後に各ルーティングエンジンを再起動しますが、このタスクではわかりやすくするために明示的に設定します reboot: True

タスクは、モジュールの結果を変数に格納し、1 つのハンドラーに response 通知します。ユーザーがチェック モードを使用してプレイブックを実行しない場合、ハンドラーは wait_reboot デバイスとのセッションを確立して、デバイスがオンラインに戻ったことを確認します。この変数は wait_time 、制御ノードがデバイスとの再接続を試みる時間の長さを定義します。

この例には、 logfile インストールの進行状況を記録するパラメーターが含まれています。これは、インストールが失敗した場合のデバッグ目的や、デバイスへのインストールの日時を記録するために重要です。プレイブックを実行するユーザーには、指定されたログ ファイルに書き込むためのアクセス許可が必要です。デフォルトでは、重大度レベルが WARNING 以上のメッセージのみがログに記録されます。この例では、インストールを監視するために重大度レベル INFO 以上のメッセージをログに記録するオプションを使用して -v プレイブックが実行されます。

構成

Ansibleプレイブックの作成

モジュールを使用して software Junosデバイスにソフトウェアイメージをインストールするプレイブックを作成するには:

  1. プレイブックの定型文と、モジュールをローカルで実行するこのプレイを含めます。

  2. 必要な変数を定義またはインポートします。この例では、希望するJunos OSバージョンや新しいイメージへのパスなどが含まれます。

  3. (オプション)NETCONF の接続性を検証するタスクを作成します。

  4. デバイスにJunos OSパッケージをインストールし、ハンドラーに通知するタスクを作成します。

  5. (オプション)モジュール応答を印刷するタスクを作成します。

  6. 再起動後にデバイスがオンラインに戻ることを確認するハンドラーを作成します。

    ハンドラー名は、インストール タスクで参照される名前と同じである必要があります。

結果

Ansibleコントロールノードで、完成したプレイブックを確認します。プレイブックに目的のコードが表示されない場合は、この例の手順を繰り返してプレイブックを修正します。

プレイブックの実行

プレイブックを実行するには:

  • ansible-playbook制御ノードでコマンドを発行し、プレイブックのパスと必要なオプションを指定します。

検証

インストールの確認

目的

ソフトウェアが正常にインストールされたことを確認します。

アクション

プレイブックの出力には、失敗したタスクが示されます。ただし、インストールの詳細については、プレイブックで定義されているログ ファイルの内容を確認することもできます。ログ ファイルの出力例を次に示します。簡潔にするために、一部の出力は省略されています。

意味

ログ ファイルの内容は、ターゲット デバイスの両方のルーティング エンジンにイメージが正常にコピーされ、インストールされたことを示します。

リリース履歴テーブル
リリース
説明
2.0.0
リリース 2.0.0 以降 Juniper.junosjuniper_junos_software モジュールはモジュールの機能を置き換えます junos_install_os