PowerOn Auto Provisioning の使用方法

この章は、次の項で構成されています。

PowerOn Auto Provisioning について

PowerOn Auto Provisioning(POAP)は、ネットワークに初めて導入された Cisco Nexus スイッチに対して、ソフトウェア イメージのアップグレードと構成ファイルのインストールのプロセスを自動化します。

POAP 機能を備えたデバイスが起動し、スタートアップ設定が見つからない場合、デバイスは POAP モードに入り、DHCP サーバーを検索、インターフェイス IP アドレス、ゲートウェイ、および DNS サーバーの IP アドレスを使用して自身をブートストラップします。また、TFTP サーバーの IP アドレスを取得し、ダウンロードするためのスイッチを有効化し、適切なソフトウェアイメージと構成ファイルをダウンロードしてインストールする構成スクリプトをダウンロードします。


(注)  


DHCP 情報は、POAP 処理中にだけ使用されます。



(注)  


POAP モードでの設定スクリプト ファイルを含む USB デバイスのチェックは、Cisco Nexus 9000 シリーズ スイッチではサポートされていません。


POAP のためのネットワーク要件

POAP には、次のネットワーク インフラが必要です。

  • インターフェイス IP アドレス、ゲートウェイ アドレス、およびドメイン ネーム システム(DNS)サーバーをブートストラップする DHCP サーバー。

  • ソフトウェア イメージのインストールと構成のプロセスを自動化する構成スクリプトが保管されている TFTP または HTTP サーバー。

  • 必要なソフトウェア イメージと構成ファイルが保管されている 1 台以上のサーバー。

  • USB を使用する場合、POAP に DHCP サーバーまたは TFTP サーバーは必要ありません。

図 1. POAP ネットワーク インフラ

POAP の無効化

POAP は、システムに構成がない場合に有効になります。ブートアップの一部として実行されます。ただし、初期設定時に POAP の有効化をバイパスできます。POAP を永続的に無効にする場合 (システムに構成がない場合でも)、「system no poap」コマンドを使用できます。このコマンドは、 (構成がない場合でも) 次の起動時に POAP が開始されないようにします。POAP を有効にするには、「system poap」コマンドまたは「write erase poap」コマンドを使用します。「write erase poap」コマンドは、POAP フラグを消去し、POAP を有効にします。

  • 例:POAP の無効化

    
    switch# system no poap
    switch# sh boot
    Current Boot Variables:
     sup-1
    NXOS variable = bootflash:/nxos.9.2.1.125.bin
    Boot POAP Disabled
     
    POAP permanently disabled using 'system no poap'
     
     
    Boot Variables on next reload:
     
    sup-1
    NXOS variable = bootflash:/nxos.9.2.1.125.bin
    Boot POAP Disabled
     
    POAP permanently disabled using 'system no poap'
    
     
    switch# sh system poap
    System-wide POAP is disabled  using exec command 'system no poap'
    POAP will be bypassed on write-erase reload.
    (Perpetual POAP cannot be enabled when system-wide POAP is disabled)
     
    
  • 例:POAP の有効化
    
    switch# system poap
    
    switch# sh system poap
    
    System-wide POAP is enabled
    
  • 例:POAP の消去

    
    switch# write erase poap
    This command will erase the system wide POAP disable flag only if it is set.
    Do you wish to proceed anyway? (y/n)  [n] y
    System wide POAP disable flag erased.
    
    switch# sh system poap
    System-wide POAP is enabled
    

POAP コンフィギュレーション スクリプト

Python プログラミング言語を使用して開発された構成スクリプトのサンプルが用意されています。提供されているスクリプトを使用し、ネットワーク環境の要件を満たすように変更することをお勧めします。

POAP スクリプトは https://github.com/datacenter/nexus9000/blob/master/nx-os/poap/poap.py にあります。

Python を使用してスクリプトを変更するには、ご使用のプラットフォームの『Cisco NX-OS Python API リファレンス ガイド』を参照してください。

POAP スクリプトおよび POAP スクリプト オプションの使用

POAP スクリプトを使用する前に、次の操作を実行します。

  1. スクリプトの上部にあるオプション ディクショナリを編集して、セットアップに関連するすべてのオプションがスクリプトに含まれるようにします。デフォルトを(デフォルトのオプション機能で)直接変更しないでください。

  2. シェル コマンドを使用して、表示されているように POAP スクリプトの MD5 チェックサムを更新します。

    f=poap_nexus_script.py ; cat $f | sed '/^#md5sum/d' > $f.md5 ; sed -i "s/^#md5sum=.*/#md5sum=\"$(md5sum $f.md5 | sed 's/ .*//')\"/" $f
    
    
  3. デバイスにスタートアップ構成がある場合は、書き込み消去を実行してデバイスをリロードします。

次の POAP スクリプト オプションを指定して、POAP スクリプトの動作を変更できます。サーバーからファイルをダウンロードするときは、ホスト名、ユーザー名、およびパスワードのオプションが必要です。パーソナリティを除くすべてのモードでは、target_system_image も必要です。必須パラメータはスクリプトによって強制され、必須パラメータが存在しない場合、スクリプトは中止されます。ホスト名、ユーザー名、およびパスワードを除くすべてのオプションには、デフォルトのオプションがあります。オプション ディクショナリでオプションを指定しない場合、デフォルトが使用されます。

  • username

    サーバーからファイルをダウンロードするときに使用するユーザー名。

  • password

    サーバーからファイルをダウンロードするときに使用するパスワード。

  • hostname

    ファイルのダウンロード元のサーバーの名前またはアドレス。

  • モード(Certificate verification mode)

    デフォルトは serial_number です。

    次のいずれかのオプションを使用します。

    • パーソナリティ

      tarball からスイッチを復元する方法。

    • SERIAL_NUMBER

      構成ファイル名を決定するスイッチのシリアル番号。構成ファイルのシリアル番号の形式は conf.serialnumber です。例: conf.FOC123456

    • hostname

      構成ファイル名を決定するために DHCP オプションで受け取ったホスト名。構成ファイルのホスト名の形式は、conf_hostname.cfg です。例:conf_3164-RS.cfg

    • mac

      構成ファイル名を決定するインターフェイスの MAC アドレス。構成ファイルのホスト名の形式は、conf_macaddress.cfg です。例:conf_7426CC5C9180.cfg

    • raw

      構成ファイル名は、オプションで指定されたとおりに使用されます。ファイル名は変更されません。

    • location

      CDP ネイバーは、構成ファイル名を決定するために使用されます。構成ファイル内の場所の形式は conf_host_intf.cfg です。ここで、host は POAP インターフェースを介してデバイスに接続されているホストであり、intf は POAP インターフェースが接続されているリモート インターフェースです。例:conf_remote-switch_Eth1_8.cfg

  • 必要なスペース

    POAP の特定の反復に必要な KB 単位のスペース。デフォルト値は 100,000 です。複数ステップのアップグレードの場合、ターゲット イメージのアップグレード パスにある最後のイメージのサイズを指定します。

  • transfer_protocol

    VSH でサポートされている http、https、ftp、scp、sftp、tftp などの転送プロトコル。デフォルトは scp です。

  • config_path

    サーバー上の構成ファイルのパス。例:/tftpboot。デフォルトは /var/lib/tftpboot です。

  • target_system_image

    リモート サーバーからダウンロードするイメージの名前。これは、POAP が完了した後に取得するイメージです。このオプションは、パーソナリティを除くすべてのモードで必須のパラメータです。デフォルトは「」です。

  • target_image_path

    サーバー上のイメージへのパス。例:/tftpboot。デフォルトは /var/lib/tftpboot です。

  • destination-path

    イメージと MD5 サムをダウンロードするパス。デフォルトは /bootflash です。

  • destination_system_image

    指定宛先イメージ ファイル名。指定しない場合、デフォルトは target_system_image 名になります。

  • user_app_path

    ユーザー スクリプト、エージェント、およびユーザー データが配置されているサーバー上のパス。デフォルトは /var/lib/tftpboot です。

  • disable_md5

    これは、MD5 チェックを無効にする必要がある場合は True です。デフォルトは [いいえ(False)] です。

  • midway_system_image

    途中のシステム アップグレードに使用するイメージの名前。デフォルトでは、POAP スクリプトはアップグレード パスで必要な中間イメージの名前を見つけて使用します。2 段階アップグレードで別の中間イメージを選択する場合は、このオプションを設定します。デフォルトは「」です。

  • source_config_file

    raw モードを使用する場合の構成ファイルの名前。デフォルトは poap.cfg です。

  • vrf

    ダウンロードなどに使用する VRF。VRF は POAP プロセスによって自動的に設定されます。デフォルトは POAP_VRF 環境変数です。

  • destination_config

    ダウンロードした構成に使用する名前。デフォルトは poap_replay.cfg です。

  • split_config_first

    構成を分割する必要がある場合に、最初の構成部分に使用する名前。構成を有効にするためにリロードするときにのみ適用されます。デフォルトは poap_1.cfg です。

  • split_config_second

    構成が分割されている場合に 2 番目の構成部分に使用する名前。デフォルトは poap_2.cfg です。

  • timeout_config

    構成ファイルのコピーのタイムアウト(秒単位)。デフォルトは 120 です。レガシー イメージ以外の場合、このオプションは使用されず、POAP プロセスがタイムアウトします。レガシー イメージの場合、FTP はこのタイムアウトをコピー プロセスではなくログイン プロセスに使用しますが、scp および他のプロトコルはこのタイムアウトをコピー プロセスに使用します。

  • timeout_copy_system

    システム イメージのコピーのタイムアウト (秒単位)。デフォルトは 2100 です。レガシー イメージ以外の場合、このオプションは使用されず、POAP プロセスがタイムアウトします。レガシー イメージの場合、FTP はこのタイムアウトをコピー プロセスではなくログイン プロセスに使用しますが、scp および他のプロトコルはこのタイムアウトをコピー プロセスに使用します。

  • timeout_copy_personality

    パーソナリティ tarball のコピーのタイムアウト (秒単位)。デフォルトは 900 です。レガシー イメージ以外の場合、このオプションは使用されず、POAP プロセスがタイムアウトします。レガシー イメージの場合、FTP はこのタイムアウトをコピー プロセスではなくログイン プロセスに使用しますが、scp および他のプロトコルはこのタイムアウトをコピー プロセスに使用します。

  • timeout_copy_user

    ユーザー スクリプトとエージェントをコピーする際のタイムアウト (秒単位)。デフォルトは 900 です。レガシー イメージ以外の場合、このオプションは使用されず、POAP プロセスがタイムアウトします。レガシー イメージの場合、FTP はこのタイムアウトをコピー プロセスではなくログイン プロセスに使用しますが、scp および他のプロトコルはこのタイムアウトをコピー プロセスに使用します。

  • personality_path

    パーソナリティ tarball のダウンロード元のリモート パス。tarball がダウンロードされ、パーソナリティ プロセスが開始されると、パーソナリティは、tarball 設定内で指定された場所から将来的にすべてのファイルをダウンロードします。デフォルトは /var/lib/tftpboot です。

  • source_tarball

    ダウンロードするパーソナリティ tarball の名前。デフォルトは、personality.tar です。

  • destination_tarball

    ダウンロード後のパーソナリティ tarball の名前。デフォルトは、personality.tar です。

POAP の DNS なしでの DHCP サーバーのセットアップ

Cisco NX-OS リリース 7.0(3)I6(1) 以降、tftp-server-name は DNS オプションなしで使用できます。以前のリリースで DNS なしで POAP 機能を有効にするには、150 のカスタム オプションを使用して tftp-server-address を指定する必要があります。

tftp-server-address オプションを使用するには、dhcpd.conf ファイルの先頭で次を指定します。

option tftp-server-address code 150 = ip-address;

例:

host MyDevice {
    option dhcp-client-identifier "\000SAL12345678";
    fixed-address 2.1.1.10;
    option routers 2.1.1.1;
    option host-name "MyDevice";
    option bootfile-name "poap_nexus_script.py";
    option tftp-server-address 2.1.1.1;
}

POAP の一部としてのユーザー データ、エージェント、およびスクリプトのダウンロードと使用

オプション ディクショナリの下に、download_scripts_and_agents 関数があります。ユーザー スクリプトとデータをダウンロードする場合は、最初の poap_log 行のコメントを外し、一連の download_user_app 関数呼び出しを使用して各アプリケーションをダウンロードします。古い Cisco NX-OS バージョンはディレクトリの再帰的コピーをサポートしていないため、そのようなディレクトリは tarball (TAR アーカイブ) に入れてから、スイッチで一度解凍する必要があります。download_scripts_and_agents 関数のパラメータは次のとおりです。

  • source_path - ファイルまたは tarball がある場所へのパス。このパラメータは必須です。例:/var/lib/tftpboot

  • source_file - ダウンロードするファイルの名前。このパラメータは必須です。例:agents.tar、script.py など。

  • dest_path - スイッチ上のファイルをダウンロードする場所。以前に存在しなかったディレクトリが作成されます。これは省略可能なパラメータです。デフォルトは /bootflash です。

  • dest_file - ダウンロードしたファイルに付ける名前。これは省略可能なパラメータです。デフォルトは変更されていない source_file です。

  • unpack - アンパック用の tarball が存在するかどうかを示します。解凍は tar -xf tarfile -C /bootflash で行います。これは省略可能なパラメータです。デフォルトは [いいえ(False)] です。

  • delete_after_unpack - アンパックが成功した後にダウンロードした tarball を削除するかどうかを示します。unpack が False の場合、効果はありません。デフォルトは [いいえ(False)] です。

ダウンロード機能を使用すると、POAP の実行に必要なすべてのエージェントとファイルをダウンロードできます。エージェントを開始するには、POAP によってダウンロードされた実行構成に構成が存在する必要があります。次に、エージェント、スケジューラ、および cron エントリを EEM とともに使用できます。

POAP 処理

POAP プロセスには次のフェーズがあります。

  1. 電源投入

  2. USB の検出

  3. DHCP の検出

  4. スクリプトの実行

  5. インストール後のリロード

これらのフェーズ内では、他の処理や分岐点が発生します。次に、POAP 処理のフロー図を示します。

図 2. POAP 処理

電源投入フェーズ

デバイスの電源を初めて投入すると、デバイスは製造時にインストールされたソフトウェア イメージをロードし、起動に使用する構成ファイルを探します。構成ファイルが見つからなかった場合、POAP モードが開始されます。

起動中、POAP を中止して通常のセットアップに進むかどうかを確認するプロンプトが表示されます。POAP を終了することも、続行することもできます。


(注)  


POAP を続行する場合、ユーザの操作は必要ありません。POAP を中止するかどうかを確認するプロンプトは、POAP 処理が完了するまで表示され続けます。


POAP モードを終了すると、通常のインタラクティブなセットアップ スクリプトが開始されます。POAP モードを続行すると、すべての前面パネルのインターフェイスはデフォルト設定で構成されます。

DHCP 検出フェーズ

スイッチは、前面パネルのインターフェイスまたは MGMT インターフェイスで、DHCP サーバーからの DHCP オファーを要請する DHCP 検出メッセージを送信します。(次の図を参照してください)。Cisco Nexus スイッチ上の DHCP クライアントは、クライアント ID オプションにスイッチ シリアル番号を使用して、それ自体を DHCP サーバーに識別させます。DHCP サーバーはこの ID を使用して、IP アドレスやスクリプト ファイル名などの情報を DHCP クライアントに返すことができます。

POAP には、最低 3600 秒(1 時間)の DHCP リース期間が必要です。POAP は、DHCP リース期間を確認します。DHCP リース期間が 3600 秒(1 時間)に満たない場合、POAP は DHCP ネゴシエーションを実行しません。

また、DHCP 検出メッセージでは、DHCP サーバーからの次のオプションを要請します。
  • TFTP サーバ名または TFTP サーバ アドレス:DHCP サーバは TFTP サーバ名または TFTP サーバ アドレスを DHCP クライアントに中継します。DHCP クライアントはこの情報を使用して TFTP サーバーに接続し、スクリプト ファイルを取得します。

  • ブートファイル名:DHCP サーバは DHCP クライアントにブートファイル名を中継します。ブートファイル名には、TFTP サーバ上のブートファイルへの完全パスが含まれます。DHCP クライアントは、この情報を使用してスクリプト ファイルをダウンロードします。

要件を満たす複数の DHCP オファーが受信されると、最初に到着したものが受け入れられ、POAP プロセスは次の段階に進みます。デバイスは、選択された DHCP サーバとの DHCP ネゴシエーション(要求と確認応答)を実行し、DHCP サーバはスイッチに IP アドレスを割り当てます。POAP 処理の後続のステップでエラーが発生すると、IP アドレスは DHCP に戻されます。

要件を満たす DHCP オファーが存在しない場合、スイッチは DHCP ネゴシエーション(要求と確認応答)を実行せず、IP アドレスは割り当てられません。

図 3. DHCP 検出プロセス
POAP ダイナミック ブレークアウト

Cisco NX-OS リリース 7.0(3)I4(1) 以降、POAP は、破損したポートの 1 つの背後にある DHCP サーバーを検出しようとして、ポートを動的に分割します。以前は、ブレークアウト ケーブルがサポートされていなかったため、POAP に使用される DHCP サーバーは通常のケーブルに直接接続する必要がありました。

POAP は、どのブレイクアウト マップ (たとえば、10gx4、50gx2、25gx4、または 10gx2) が DHCP サーバーに接続されたリンクを起動するかを決定します。どのポートでもブレイクアウトがサポートされていない場合、POAP はダイナミック ブレイクアウト プロセスをスキップします。ブレークアウト ループが完了すると、POAP は通常どおり DHCP 検出フェーズを続行します。


(注)  


ダイナミック ブレイクアウトの詳細については、デバイスのインターフェイス構成ガイドを参照してください。


スクリプトの実行フェーズ

デバイスが DHCP 確認応答の情報を使用してデバイス自体をブートストラップした後で、スクリプト ファイルが TFTP サーバーからダウンロードされます。

スイッチは、コンフィギュレーション スクリプトを実行します。これにより、ソフトウェア イメージのダウンロードとインストール、およびスイッチ固有のコンフィギュレーション ファイルのダウンロードが行われます。

ただし、この時点では、構成ファイルはスイッチに適用されません。スイッチ上で現在実行中のソフトウェア イメージが構成ファイル内の一部のコマンドをサポートしていない可能性があるためです。新しいソフトウェア イメージがインストールされた場合、スイッチのリブート後にそのソフトウェア イメージの実行が開始されます。その時点でスイッチにコンフィギュレーションが適用されます。


(注)  


スイッチの接続が切断されると、スクリプトは停止し、スイッチはオリジナルのソフトウェア イメージとブートアップ変数をリロードします。


インストール後のリロード フェーズ

スイッチが再起動し、アップグレードされたソフトウェア イメージ上でコンフィギュレーションが適用(リプレイ)されます。その後、スイッチは、実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーします。

POAP の注意事項および制約事項

POAP 構成時の注意事項および制約事項は次のとおりです。

  • bootflash:poap_retry_debugs.log は、内部目的でのみ POAP-PNP によって入力されるファイルです。このファイルは、POAP 障害が発生した場合には関係ありません。

  • この機能が動作するには、スイッチ ソフトウェア イメージで POAP をサポートしている必要があります。

  • POAP では、スイッチが設定されて動作可能になった後のスイッチのプロビジョニングをサポートしません。スタートアップ コンフィギュレーションのないスイッチの自動プロビジョニングだけがサポートされます。

  • POAP の https プロトコルで ignore-certificate キーワードを使用するには、https_ignore_certificate オプションをオンにする必要があります。これにより、POAP スクリプトで HTTPS 転送を正常に実行でき、プロトコルは POAP で機能しないため、このオプション https なしで実行できます。

  • 仮想ポート チャネル(vPC)ペアの一部である Cisco Nexus デバイスをブートストラップするために POAP を使用する場合、Cisco Nexus デバイスは POAP の起動時にそのすべてのリンクをアクティブにします。vPC のリンクの端に二重接続されているデバイスは、Cisco Nexus デバイスに接続されているポート チャネル メンバ リンクにそのトラフィックの一部またはすべての送信を開始する場合があり、トラフィックが失われることがあります。

    この問題を回避するには、リンクが POAP を使用してブートストラップされている Cisco Nexus デバイスへのトラフィックの転送を誤って開始しないように、vPC リンクにリンク集約制御プロトコル(LACP)を設定します。

  • POAP を使用して、LACP ポート チャネル経由で Cisco Nexus 9000 シリーズ スイッチのダウンストリームに接続されている Cisco Nexus デバイスをブートストラップした場合、メンバー ポートをポート チャネルの一部としてバンドルできないと、Cisco Nexus 9000 シリーズ スイッチはデフォルトでそのメンバー ポートを一時停止します。この問題を回避するには、インターフェイス コンフィギュレーション モードから no lacp suspend-individual コマンドを使用して、そのメンバー ポートを一時停止しないように Cisco Nexus 9000 シリーズ スイッチを構成します。

  • 重要な POAP の更新は syslog に記録され、シリアル コンソールから使用可能になります。

  • 重大な POAP エラーは、ブートフラッシュに記録されます。ファイル名のフォーマットは date-time_poap_PID_[init,1,2].log です。ここで、 date-time のフォーマットは YYYYMMDD_hhmmss で、PID はプロセス ID になります。

  • POAP プロンプトで skip オプションを使用すると、パスワードと基本的な POAP 設定をバイパスできます。この skip オプションを使用すると、管理者ユーザーのパスワードは構成されません。admin ユーザーに有効なパスワードが設定されるまで、コマンドはブロックされます。copy running-config startup-config

  • boot poap enable コマンド(永続的な POAP)がスイッチで有効になっている場合、リロード時に、スタートアップ コンフィギュレーションが存在していても、POAP ブートがトリガーされます。このシナリオで POAP を使用しない場合は、no boot poap enable コマンドを使用して boot poap enable 構成を削除します。

  • スクリプト ログは、ブートフラッシュ ディレクトリに保存されます。ファイル名のフォーマットは date-time_poap_PID_script.log です。ここで、 date-time のフォーマットは YYYYMMDD_hhmmss で、PID はプロセス ID になります。

    スクリプトのログ ファイルの形式を設定できます。スクリプト ファイルのログ形式は、スクリプトで指定されます。スクリプトのログ ファイルのテンプレートにはデフォルトの形式があります。ただし、スクリプト実行ログ ファイルに別の形式を選択できます。

  • POAP 機能にライセンスは必要ありません。デフォルトでイネーブルになっています。ただし、POAP 機能が正しく動作するためには、ネットワークの導入前に適切なライセンスがネットワーク内のデバイスにインストールされている必要があります。

  • POAP の USB サポートにより、構成スクリプト ファイルを含む USB デバイスを POAP モードでチェックできます。この機能は、Nexus 9300-EX、-FX、-FX2、-FX3、および Nexus 9200-X、-FX2 スイッチでサポートされています。

  • NX-OS 7.0(3)I7(4) 以降、RFC 3004(DHCP のユーザー クラス オプション)がサポートされています。これにより、POAP は DHCPv4 のユーザー クラス オプション 77 と DHCPv6 のユーザー クラス オプション 15 をサポートできます。DHCPv4 と DHCPv6 の両方のユーザー クラス オプションに表示されるテキストは「Cisco-POAP」です。

    • RFC 3004(DHCP のユーザー クラス オプション)のサポートにより、Nexus 9000 スイッチで IPv6 上の POAP がサポートされます。

      • NX-OS 9.2(2) 以降、IPv6 を介した POAP は、–R ラインカードを備えた Nexus 9504 および Nexus 9508 スイッチでサポートされます。

      IPv6 上の POAP 機能により、IPv4 で障害が発生したときに POAP プロセスが IPv6 を使用できるようになります。この機能は、接続障害が発生したときに IPv4 プロトコルと IPv6 プロトコルの間を循環するように設計されています。

  • 安全な POAP の場合は、DHCP スヌーピングが有効になっていることを確認してください。

  • POAP をサポートするには、ファイアウォール ルールを設定して、意図しないまたは悪意のある DHCP サーバーをブロックします。

  • システムのセキュリティを維持し、POAP をより安全にするには、次のように構成します。

    • DHCP スヌーピングをイネーブルにします。

    • ファイアウォール ルールを設定して、意図しない、または悪意のある DHCP サーバーをブロックします。

  • POAP は、MGMT ポートとインバンド ポートの両方でサポートされます。

POAP を使用するためのネットワーク環境の設定

手順


ステップ 1

提供されている構成スクリプトを必要に応じて変更します。

ステップ 2

DHCP サーバを配置し、このサーバにインターフェイス、ゲートウェイ、および TFTP サーバの IP アドレスと、コンフィギュレーション スクリプト ファイルのパスと名前が指定されたブートファイルを設定します。(この情報は、最初の起動時にスイッチに提供されます)。

ステップ 3

構成スクリプトをホストするための TFTP サーバーを展開します。

ステップ 4

ソフトウェア イメージおよびコンフィギュレーション ファイルをホストするための 1 つまたは複数のサーバを配置します。


POAP を使用するスイッチの設定

始める前に

POAP を使用するためにネットワーク環境がセットアップされていることを確認します。

手順


ステップ 1

ネットワークにスイッチを設置します。

ステップ 2

スイッチの電源を投入します。

構成ファイルが見つからない場合は、スイッチは POAP モードで起動して、POAP を中止して通常のセットアップで続行するかどうかを尋ねるプロンプトが表示されます。

POAP モードで起動を続行するためのエントリは必要ありません。

ステップ 3

(オプション)POAP モードを終了して、通常のインタラクティブ セットアップ スクリプトを開始する場合は、y (yes)を入力します。

スイッチが起動して、POAP 処理が開始されます。


次のタスク

設定を確認します。

md5 ファイルの作成

構成スクリプトに変更を加えるたびに、bash シェルを使用して、# f=poap_fabric.py ; cat $f | sed '/^#md5sum/d' > $f.md5 ; sed -i "s/^#md5sum=.*/#md5sum=\"$(md5sum $f.md5 | sed 's/ .*//')\"/" $f を実行することにより、必ず MD5 チェックサムを再計算します。

このプロシージャは、poap_fabric.py の md5sum を新しい値に置き換えます(そのファイルに変更があった場合)。


(注)  


手順 1 ~ 4 および 7 ~ 8 は、BASH シェルを使用している場合にのみ必要です。他の Linux サーバーにアクセスできる場合、これらの手順は必要ありません。


始める前に

bash シェルにアクセスします。

手順

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル設定モードを開始します。

ステップ 2

feature bash-shell

例:


switch(config)# feature bash-shell

BASH シェル機能を有効にします。

ステップ 3

exit

例:


switch(config)# exit

コンフィギュレーション モードを終了します。

ステップ 4

run bash

例:

switch# run bash

Linux BASH を開きます。

ステップ 5

md5sum /bootflash/nxos.release_number.bin > /bootflash/nxos.release_number.bin.md5

例:

bash-4.2$ md5sum /bootflash/nxos.7.0.3.I6.1.bin > /bootflash/nxos.7.0.3.I6.1.bin.md5

.bin ファイルの md5sum を作成します。

ステップ 6

md5sum /bootflash/poap.cfg > /bootflash/poap.cfg.md5

例:

bash-4.2$ md5sum /bootflash/poap.cfg > /bootflash/poap.cfg.md5

.cfg ファイルの md5sum を作成します。

ステップ 7

exit

例:


switch(config)# exit

BASH シェルを終了します。

ステップ 8

dir | i .md5

例:

switch# dir | i .md5
   65  Jun 09 12:38:48 2017  nxos.7.0.3.I6.1.bin.md5
   54  Jun 09 12:39:36 2017  poap.cfg.md5
67299  Jun 09 12:48:58 2017  poap.py.md5

.md5 ファイルを表示します。

ステップ 9

copy bootflash:poap.cfg.md5 scp://ip_address/

例:

copy bootflash:poap.cfg.md5 scp://10.1.100.3/
Enter vrf (If no input, current vrf 'default' is considered): management
Enter username: root
root@10.1.100.3's password:
poap.cfg.md5                                  100%   54     0.1KB/s   00:00
Copy complete.

ファイルを構成およびソフトウェア サーバーにアップロードします。

デバイス コンフィギュレーションの確認

構成を確認するためには、次のいずれかのコマンドを使用します。

コマンド

目的

show running-config

実行設定を表示します。

show startup-config

スタートアップ コンフィギュレーションを表示します。

Note

 

レイヤ 3 ベースの機能構成が running-config で無効になっている場合、show startup-config コマンドはそれらを表示しません。ただし、copy running startup コマンドが実行されるまで、構成はスタートアップ PSS にそのまま残ります。

show time-stamp running-config last-changed

実行構成が最後に変更されたときのタイムスタンプを表示します。

このオプションは、実行構成出力の機密ワードを <removed> キーワードによりマスクします。

POAP のトラブルシューティング

以下は、POAP を使用する際の既知の問題と提案のリストです。

  • 問題:POAP スクリプトの実行がすぐに失敗し、「スクリプトの実行に失敗しました」というステートメントを除いて、syslog または出力が表示されません。

    提案:サーバーで python script-name コマンドを使用し、構文エラーがないことを確認します。options ディクショナリは Python ディクショナリであるため、各エントリはコンマで区切って、キーまたはオプションと値をコロンで区切る必要があります。

  • 問題:正しく使用されていないオプションに応じて、さまざまな場所で TypeError 例外が発生します。

    提案:一部のオプションでは整数を使用します (たとえば、タイムアウトやその他の数値)。引用符で囲まれた数値については、options ディクショナリを確認してください。正しい使用法については、オプション リストを参照してください。

POAP パーソナリティの管理

POAP パーソナリティ

Cisco NX-OS リリース 7.0(3)I4(1) で導入された POAP パーソナリティ機能により、ユーザー データ、Cisco NX-OS とサードパーティのパッチ、および構成ファイルをバックアップおよび復元できます。以前のリリースでは、POAP は構成のみを復元できました。

POAP のパーソナリティは、スイッチ上で追跡されたファイルによって定義されます。パーソナリティ ファイルの構成およびパッケージ リストは ASCII ファイルです。

バイナリ バージョンはパーソナリティ ファイルに記録されますが、実際のバイナリ ファイルは含まれません。バイナリ ファイルは通常大きいため、指定されたリポジトリからアクセスします。

パーソナリティ ファイルは .tar ファイルで、通常は一時フォルダに抽出されます。次に例を示します。

switch# dir bootflash: 042516182843personality # timestamp name
46985 Dec 06 23:12:56 2015 running-config  Same as “show running-configuration” command.
20512 Dec 06 23:12:56 2015 host-package-list  Package/Patches list
58056 Dec 06 23:12:56 2015 data.tar  User Data
25    Dec 06 23:12:56 2015 IMAGEFILE  Tracked image metadata

POAP パーソナリティのバックアップ

スイッチ上でローカルに、またはサーバー上でリモートに POAP パーソナリティのバックアップを作成できます。スイッチから取得したパーソナリティ バックアップは、同じモデルのスイッチでのみ復元する必要があります。


(注)  


バックアップに Cisco スケジューラ機能を使用している場合は、次の例に示すように、POAP パーソナリティもバックアップするように設定できます。スケジューラの詳細については、『Cisco Nexus 9000 Series NX-OS System Management Configuration Guide』を参照してください。
switch(config)# scheduler schedule name weeklybkup
switch(config-schedule)# time weekly mon:07:00
switch(config-schedule)# job name personalitybkup
switch(config-schedule)# exit
switch(config)# scheduler job name personalitybkup
switch(config-job)# personality backup bootflash:/personality-file ; copy bootflash:/personality-file tftp://10.1.1.1/ vrf management

手順の概要

  1. personality backup [bootflash:uri | scp:uri]

手順の詳細

コマンドまたはアクション 目的

personality backup [bootflash:uri | scp:uri]

例:

switch# personality backup bootflash:personality1.tar

例:

switch# personality backup scp://root@2.1.1.1/var/lib/tftpboot/backup.tar

POAP パーソナリティのバックアップを作成します。

POAP パーソナリティの構成

POAP パーソナリティをシステムの実行状態またはコミット(起動)状態のどちらから取得するかを指定できます。

手順の概要

  1. configure terminal
  2. personality
  3. track [running-state | startup-state | data local-directories-or-files]
  4. binary-location source-uri-folder

手順の詳細

  コマンドまたはアクション 目的

ステップ 1

configure terminal

例:

switch# configure terminal
switch(config)#

グローバル設定モードを開始します。

ステップ 2

personality

例:

switch# personality
switch(config-personality)#

パーソナリティ構成モードに入ります。

ステップ 3

track [running-state | startup-state | data local-directories-or-files]

例:

switch(config-personality)# track data bootflash:myfile1

例:

switch(config-personality)# track data bootflash:user_scripts/*.py

例:

switch(config-personality)# track data bootflash:basedir/*/backup_data

POAP パーソナリティの派生方法を指定します。次のオプションを使用できます。

  • running-state :次の情報を取得します。実行構成(show running-config コマンドで表示)、ホスト システムのアクティブな Cisco NX-OS パッチとサードパーティ パッケージ、およびイメージ名(show version コマンドで表示)。これがデフォルトのオプションです。

  • startup-state :次の情報をキャプチャします。スタートアップ コンフィギュレーション(show startup-config コマンドで表示)、ホスト システムでコミットされた Cisco NX-OS パッチおよびサードパーティ パッケージ、およびイメージ名(show version コマンドで表示)。

  • data local-directories-or-files :バックアップするディレクトリまたはファイルを指定します。 このコマンドを複数回入力して、複数のディレクトリおよびファイルをバックアップできます。UNIX 形式のワイルドカード文字がサポートされています。この例では、1 つのフォルダと 2 つのディレクトリが指定されています。

(注)  

 

このコマンドを使用してブートフラッシュ内のバイナリ ファイルをバックアップしたり、ブートフラッシュ全体をポイントしたりしないでください。

(注)  

 

ゲスト シェル パッケージは追跡されません。

(注)  

 

署名付き RPM(キーが必要)はサポートされていません。POAP パーソナリティ機能は、署名された RPM では機能しません。

ステップ 4

binary-location source-uri-folder

例:

switch(config-personality)# binary-location scp://remote-dir1/nxos_patches/

POAP パーソナリティの復元時にバイナリ ファイルを取得するローカル ディレクトリまたはリモート ディレクトリを指定します。このコマンドを複数回(優先順位に従って)入力して、複数の場所を指定できます。

POAP パーソナリティの復元

POAP スクリプトの実行フェーズ中に、現在起動されているスイッチ イメージが Cisco NX-OS リリース 7.0(3)I4(1) 以降である場合、スクリプト内のパーソナリティ モジュールは POAP パーソナリティを復元します。必要に応じて、スイッチを正しいソフトウェア イメージにアップグレードします。


(注)  


パーソナリティの復元は、パーソナリティのバックアップに使用されたのと同じソフトウェア イメージを使用して実行されます。新しいイメージへのアップグレードは、POAP パーソナリティ機能ではサポートされていません。新しいイメージにアップグレードするには、通常の POAP スクリプトを使用します。



(注)  


パーソナリティ スクリプトが何らかの理由(ブートフラッシュに十分なスペースがない、スクリプトの実行に失敗するなど)で失敗した場合、POAP プロセスは DHCP 検出フェーズに戻ります。


復元プロセスは、次のアクションを実行します。

  1. ブートフラッシュ内のパーソナリティ ファイルを解凍します。

  2. パーソナリティ ファイルを検証します。

  3. パーソナリティ ファイルから構成ファイルとパッケージ リスト ファイルを読み取り、ダウンロードするバイナリのリストを作成します。

  4. 現在のイメージまたはパッチがパーソナリティ ファイルで指定されたものと異なる場合、バイナリをブートフラッシュ(存在しない場合)にダウンロードし、正しいイメージで再起動してから、パッケージまたはパッチを適用します。

  5. 「/」を基準にしてユーザー データ ファイルを解凍します。

  6. POAP パーソナリティの構成ファイルをスタートアップ構成にコピーします。

  7. スイッチをリブートします。

POAP パーソナリティ サンプル スクリプト

次のサンプル POAP スクリプト(poap.py)には、パーソナリティ機能が含まれています。

#md5sum="b00a7fffb305d13a1e02cd0d342afca3"
# The above is the (embedded) md5sum of this file taken without this line, # can be # created this way: 
# f=poap.py ; cat $f | sed '/^#md5sum/d' > $f.md5 ; sed -i "s/^#md5sum=.*/#md5sum=$(md5sum $f.md5 | sed 's/ .*//')/" $f # This way this script's integrity can be checked in case you do not trust # tftp's ip checksum. This integrity check is done by /isan/bin/poap.bin).
# The integrity of the files downloaded later (images, config) is checked # by downloading the corresponding file with the .md5 extension and is # done by this script itself.

from poap.personality import POAPPersonality import os

# Location to download system image files, checksums, etc.
download_path = "/var/lib/tftpboot"
# The path to the personality tarball used for restoration personality_tarball = "/var/lib/tftpboot/foo.tar"
# The protocol to use to download images/config protocol = "scp"
# The username to download images, the personality tarball, and the # patches and RPMs during restoration username = "root"
# The password for the above username
password = "passwd754"
# The hostname or IP address of the file server server = "2.1.1.1"

# The VRF to use for downloading and restoration vrf = "default"
if os.environ.has_key('POAP_VRF'):
    vrf = os.environ['POAP_VRF']

# Initialize housekeeping stuff (logs, temp dirs, etc.) p = POAPPersonality(download_path, personality_tarball, protocol, username, password, server, vrf)

p.get_personality()
p.apply_personality()

sys.exit(0)