PowerOn Auto Provisioning の概要
PowerOn Auto Provisioning(POAP)は、ネットワークに初めて導入された Cisco Nexus スイッチに対して、ソフトウェア イメージのアップグレードとコンフィギュレーション ファイルのインストールのプロセスを自動化します。
When a Cisco Nexus シリーズ switch with the POAP feature boots and does not find the startup configuration, the switch enters POAP mode and checks for a USB device containing the configuration script file. 見つかった場合は、ソフトウェア イメージ ファイル、およびスイッチのコンフィギュレーション ファイルが含まれているかどうか、そのデバイスを確認します。
スイッチが USB デバイスを検出しない場合、または USB デバイスに必要なイメージ ファイルまたはスイッチのコンフィギュレーション ファイルが含まれていない場合、スイッチは DHCP サーバを見つけ、インターフェイス IP アドレス、ゲートウェイ、および DNS サーバ IP アドレスを使用してブートストラップします。スイッチは、必要なコンフィギュレーション ファイルをダウンロードする TFTP サーバの IP アドレス、または HTTP サーバの URL を取得します。
(注) |
DHCP 情報は、コンフィギュレーション ファイルが USB デバイスで見つからない場合に、POAP プロセスにのみ使用されます。 バックアップ設定ファイルに管理ユーザ名とパスワードがない場合、POAP は完了後にコンソールをロックアウトします。コンフィギュレーション ファイルでのユーザ名とパスワードの追加は必須ステップです。 |
POAP のためのネットワーク要件
If a USB device containing the required installation files is not available, POAP requires the following network infrastructure:
-
インターフェイス IP アドレス、ゲートウェイ アドレス、DNS サーバ、およびログ サーバをブートストラップする DHCP サーバ
-
ソフトウェア イメージのインストールと設定のプロセスを自動化するコンフィギュレーション スクリプトが保管されている TFTP または HTTP サーバ
-
必要なソフトウェア イメージとコンフィギュレーション ファイルが保管されている 1 台以上のサーバ
POAP コンフィギュレーション スクリプト
サンプル設定スクリプトを Python プログラミング言語を使用して開発されたのお客様に提供します。これらのスクリプトを、自分のネットワーク環境に合わせてカスタマイズできます。
完全な POAP スクリプトははにあります。 https://github.com/datacenter/nexus9000/blob/master/nx-os/poap/poap.py
Python を使用したこのスクリプトのカスタマイズについては、ご使用のプラットフォームの『Cisco NX-OS Python API Reference Guide』を参照してください。
POAP スクリプトおよび POAP スクリプト オプションを使用する
POAP スクリプトを使用する前に、次のアクションを実行します。
-
スクリプト上部にあるオプション ディクショナリを編集し、すべてのセットアップに関連するオプションがスクリプトに含まれていることを確認します。直接デフォルトを変更しないでください(デフォルト オプション機能で)。
-
Shell コマンドを使用して示すように、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
-
デバイスにスタートアップ設定がある場合、書き込み消去を実行して、デバイスをリロードします。
次は POAP スクリプト オプションの包括的なリストであり、POAP スクリプトの動作の変更を指定できます。サーバからダウンロードするとき、「ホスト名」、「ユーザー名」、「パスワード」が必要です。「'パーソナル」 を除くすべてのモードで、「target_system_image」も必要です。必要なパラメータはスクリプトにより適用され、必要なパラメータが存在しない場合、スクリプトが中止されます。「ホスト名」、「ユーザー名」「パスワード」 を除くすべてのオプションには、デフォルトのオプションがあります。オプション ディクショナリでオプションを指定しない場合は、説明したようにデフォルトが使用されます。
-
username
サーバからファイルをダウンロードするときに使用するユーザー名。これは USB を使用するときには必要ありません。
-
password
サーバからファイルをダウンロードするときに使用するパスワード。これは USB を使用するときには必要ありません。
-
hostname
ファイルをダウンロードするサーバの名前またはアドレス。これは USB を使用するときには必要ありません。
-
mode
デフォルトはシリアル番号です。
次のいずれかのオプションを使用します。
-
パーソナリティ
Tarball からスイッチを復元する方法。
-
シリアル番号
設定ファイル名を決定するスイッチのシリアル番号。設定ファイルのシリアル番号の形式は conf.serialnumber です。例:conf.FOC123456
-
hostname
設定ファイル名を決定する DHCP オプションで受信するホスト名。設定ファイルでホスト名を使用するための形式は、conf_<hostname>.cfg です。例:conf_3164 RS.cfg</hostname>
-
mac
設定ファイル名を決定するインターフェイス MAC アドレス。設定ファイルでホスト名を使用するための形式は、conf_<macaddress>.cfg です。例::conf_7426CC5C9180.cfg</macaddress>
-
raw
設定ファイル名がオプションで提供されるとおりに正確に使用されます。ファイル名を変更することはできません。
-
location
CDP ネイバーを使用して、設定ファイル名を決定します。設定ファイルの場所を使用するための形式は、conf_<host>_<intf>.cfg です。これは、<host> は POAP インターフェイス上でデバイスに接続されているホストであり、<intf>が POAP インターフェイスが接続されているリモート インターフェイスです。例::conf_remote switch_Eth1_8.cfg
-
-
required_space
特定の反復 POAP の KB に必要な領域です。デフォルトは 100000 です。マルチステップ アップグレードについては、ターゲット イメージまたはイメージのアップグレード パスにある最後のイメージのサイズを指定します。
-
transfer_protocol
http、https、ftp、scp、sftp、または tftp などの転送プロトコルは、VSH でサポートされています。デフォルトは scp です。
-
config_path
サーバ上の設定ファイルへのパス。例:/tftpboot. デフォルトでは、/var/lib/tftpboot です。
-
target_system_image
リモート サーバからダウンロードするイメージの名前。これは、POAP が完了した後に取得するイメージです。これは、「パーソナル」を除くすべてのモードのパラメータに必要です。Default is "".
-
target_image_path
サーバ上のイメージへのパス。例:/tftpboot. デフォルトでは、/var/lib/tftpboot です。
-
target_kickstart_image
リモート サーバからダウンロードするキックスタート イメージの名前。これは、POAP が完了した後に取得するキックスタート イメージです。Default is "".
-
destination_path
イメージと MD5 合計をダウンロードするパス。デフォルトは /bootflash です。
-
destination_system_image
宛先のシステム イメージ ファイル名の名前。指定されていない場合、デフォルトは「target_system_image」名です。
-
destination_kickstart_image
宛先キックスタート イメージ ファイル名の名前。指定されていない場合、デフォルトは「target_kickstart_image」名です。
-
user_app_path
ユーザーのスクリプト、エージェント、およびユーザーのデータがあるサーバ上のパス。デフォルトでは、/var/lib/tftpboot です。
-
disable_md5
MD5 チェックが無効になっている場合、これは True です。デフォルトは False です。
-
midway_system_image
中間システム アップグレードに使用するシステム イメージの名前。デフォルトでは、POAP スクリプトがアップグレード パスで必要な中間イメージの名前を検索し、それらを使用します。2 段階のアップグレードに異なる中間イメージを選択する場合は、このオプションを設定します。Default is "".
-
midway_kickstart_image
中間システム アップグレードに使用するキックスタート イメージの名前。デフォルトでは、POAP スクリプトがアップグレード パスで必要な中間イメージの名前を検索し、それらを使用します。2 段階のアップグレードに異なる中間イメージを選択する場合は、このオプションを設定します。Default is "".
-
usb_slot
USB POAP に使用する USB スロット番号。デフォルト値は 1 です。
-
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 プロセスがタイムアウトします。レガシ イメージについては、scp およびその他のプロトコルがコピー プロセスにこのタイムアウトを使用している一方、FTP はこのタイムアウトをログイン プロセスに使用しており、コピー プロセスには使用していません。
-
timeout_copy_system
システム イメージのコピーは秒単位でタイムアウトします。デフォルトは 2100 です。レガシ以外のイメージについては、このオプションを使用しないと POAP プロセスがタイムアウトします。レガシ イメージについては、scp およびその他のプロトコルがコピー プロセスにこのタイムアウトを使用している一方、FTP はこのタイムアウトをログイン プロセスに使用しており、コピー プロセスには使用していません。
-
timeout_copy_kickstart
キックスタート イメージのコピーは秒単位でタイムアウトします。デフォルトは 900 です。レガシ以外のイメージについては、このオプションを使用しないと POAP プロセスがタイムアウトします。レガシ イメージについては、scp およびその他のプロトコルがコピー プロセスにこのタイムアウトを使用している一方、FTP はこのタイムアウトをログイン プロセスに使用しており、コピー プロセスには使用していません。
-
timeout_copy_personality
パーソナル tarball のコピーは秒単位でタイムアウトします。デフォルトは 900 です。レガシ以外のイメージについては、このオプションを使用しないと POAP プロセスがタイムアウトします。レガシ イメージについては、scp およびその他のプロトコルがコピー プロセスにこのタイムアウトを使用している一方、FTP はこのタイムアウトをログイン プロセスに使用しており、コピー プロセスには使用していません。
-
timeout_copy_user
ユーザー スクリプトおよびエージェントのコピーは秒単位でタイムアウトします。デフォルトは 900 です。レガシ以外のイメージについては、このオプションを使用しないと POAP プロセスがタイムアウトします。レガシ イメージについては、scp およびその他のプロトコルがコピー プロセスにこのタイムアウトを使用している一方、FTP はこのタイムアウトをログイン プロセスに使用しており、コピー プロセスには使用していません。
-
personality_path
パーソナル tarball をダウンロードするリモート パス。Tarball がダウンロードされパーソナル プロセスが開始されると、パーソナル設定内で指定された場所から、将来のすべてのファイルをダウンロードします。デフォルトは/var/lib/tftpboot です
-
source_tarball
ダウンロードするパーソナル tarball の名前。デフォルトは personality.tar です
-
destination_tarball
ダウンロード後、ダウンロードしたパーソナル tarball の名前。デフォルトは personality.tar です
POAP アップグレード パス
Cisco Nexus 3000 シリーズ スイッチでは、1 つのソフトウェア イメージを別に移動するために、POAP の一部として扱われる中間アップグレードて手順が必要です。POAP が複数のソフトウェア イメージをロード中の場合、混乱を避けるため必要なアップグレード パスを知っている必要があります。
N3K-C3048TP-1GE-SUP プラットフォームでは、Cisco NX-OS リリース 5.0(3)U5(1) よりも古いソフトウェア バージョンを使用する場合、Cisco NX-OS リリース 5.0(3)U5(1) へのアップグレードを最初に行い、Cisco NX-OS リリース 6.0(2)U6(2a) にアップグレードし、最後に 6.0(2)U6(7) または最新リリースにアップグレードします。
Cisco NX-OS リリース 6.0(2)U6(2a) へアップグレードするこの追加の手順をスキップする場合、midway_system_image および midway_kickstart_image オプションを使用する必要があります。
各手順ごとに必要なソフトウェア イメージは次のとおりです。
-
Cisco リリース 5.0(3)U5(1) - n3000-uk9-kickstart.5.0.3.U5.1.bin,、n3000-uk9.5.0.3.U5.1.bin
-
Cisco リリース 6.0(2)U6(2a) - n3000-uk9-kickstart.6.0.2.U6.2a.bin、n3000-uk9.6.0.2.U6.2a.bin
-
Cisco リリース 6.0(2)U6(7) - n3000-uk9-kickstart.6.0.2.U6.7.bin,、n3000-uk9.6.0.2.U6.7.bin
その他すべての Cisco Nexus の 3xxx プラットフォームでは、Cisco NX-OS リリース 5.0(3)U5(1) よりも古いソフトウェア バージョンを使用する場合、Cisco NX-OS リリース 5.0(3)U5(1) へのアップグレードを最初に行い、6.0(2)U6(7) または最新リリースにアップグレードします。
ただし、N3K-C3048TP-1GE-SUP プラットフォームおよびその他のデバイスが混合している場合、N3K-C3048TP-1GE-SUP プラットフォームのデフォルト アップグレード パス(オプションは必要ありません)と、他のデバイスに設定されている ミッドウェー オプションによる別のスクリプトを使用する必要があります。ベンダー クラス ID を使用してデバイスのタイプを区別することができます。
POAP アップグレード ブートフラッシュ サイズ
複数のアップグレード プロセスを必要とする小規模なブートフラッシュ(1.6 GB 以下)がある Cisco Nexus 3xxx デバイスについては、ブートフラッシュに十分な空きがない場合問題が発生する可能性があります。必要なブートフラッシュの合計容量の計算には、次を使用します。
(現在実行中のイメージのサイズ) + (ミッドウェー イメージのサイズ) + (ターゲット イメージのサイズ) + (ブートフラッシュ サイズの 18%)
たとえば、1.6 GB のブートフラッシュを持つ N3K-C3048TP-1GE-SUP プラットフォームで、5.0(3)U5.1.bin を実行しており、Cisco リリース 7.0(3)I4(5) へアップグレードしようとしている場合、次が必要になります。
5.0(3)U5(1): - 現在のイメージ、6.0(2)U6(7) - 最大のミッドウェー イメージ、7.0(3)I4(3) - ターゲット イメージ、および 1.6 GB ブートフラッシュの 18%
(126 MB システム + 24 MB キックスタート) + (198 MB システム + 37 MB キックスタート イメージ) + (665 MB NX-OS) + (295 MB 空き領域) = 1.31 GB
この例では、現在のソフトウェア イメージとは別にブートフラッシュには 200 MB のみあります。
POAP の DNS なしで DHCP サーバを設定する
NX-OS リリース 7.0(3)I4(5)から、tftp-server-name は DNS オプションなしで使用できます。7.0(3)I4(5) リリース以前のリリースで 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 のアーカイブ) に配置し、スイッチの 1 回展開する必要があります。download_scripts_and_agents関数のパラメータは次のとおりです。
-
source_path -ファイルまたは tarball があるへのパス。このパラメータは必須です。例:/var/lib/tftpboot。
-
source_file -ダウンロードするファイルの名前。このパラメータは必須です。例: agents.tar、script.py、およびなど。
-
dest_path -スイッチ上のファイルをダウンロードする場所です。宛先が存在しない、ディレクトリが作成されます。これは省略可能なパラメータです。The default is /bootflash.
-
dest_file -、ダウンロードしたファイルに割り当てる名前。これは省略可能なパラメータです。デフォルトでは、source_file は変更されません。
-
開梱 -解凍するときに、tarball が存在するかどうかを示します。Unpacking is done with tar -xf tarfile -C /bootflash . これは省略可能なパラメータです。デフォルトは False です。
-
delete_after_unpack -ダウンロードした tarball を削除するかどうかを示します: 解凍した後に成功するとします。場合、効果はありません: 解凍は false です。デフォルトは False です。
ダウンロード機能を使用して、すべてのエージェントおよび POAP の実行に必要なファイルをダウンロードすることができます。エージェントを開始するには、POAP によってダウンロード実行コンフィギュレーションに設定する必要があります。次に、エージェント、スケジューラ、および EEM、とともに、cron エントリを使用することができます。
POAP のトラブルシューティング
次は、POAP の使用中に発生した既知の問題と推奨事項の一覧です。
-
問題:syslog がない状態でPOAPスクリプトの実行にすぐに失敗するか、「スクリプトの実行に失敗しました」の文以外の出力がありませんでした。
Suggestion: Use the python script-name command on the server and make sure there are no syntax errors. オプション ディクショナリは Python ディクショナリのため、各エントリはカンマ区切りにして、キーやオプションを有し、値をコロンで区切る必要があります。
-
問題:誤って使用されているオプションに応じて、さまざまな場所で TypeError の例外が発生します。
提案:一部のオプションは整数を使用します(たとえば、タイムアウトとその他の数値)。引用符で囲まれている数値について、オプション ディクショナリを確認します。正しい使用状況については、オプション一覧を参照してください。
-
問題:USB 上の POAP がファイルの存在を検索しません。
提案:一部のデバイスには 2 つの USB スロットがあります。USB スロット 2 を使用している場合は、オプションとして指定する必要があります。詳細については、POAP スクリプトおよび POAP スクリプト オプションを使用する の下のオプションを参照してください。
POAP 処理
POAP プロセスには次のフェーズがあります。
-
電源投入
-
USB の検出
-
DHCP の検出
-
スクリプトの実行
-
インストール後のリロード
これらのフェーズ内では、他の処理や分岐点が発生します。次に、POAP 処理のフロー図を示します。
電源投入フェーズ
スイッチの初回電源投入時に、製造時にインストールされているソフトウェア イメージがロードされ、スイッチの起動後に適用されるコンフィギュレーション ファイルが検索されます。コンフィギュレーション ファイルが見つからなかった場合、POAP モードが開始されます。
起動中、POAP を中止して通常のセットアップに進むかどうかを確認するプロンプトが表示されます。POAP を終了することも、続行することもできます。
(注) |
POAP を続行する場合、ユーザの操作は必要ありません。POAP を中止するかどうかを確認するプロンプトは、POAP 処理が完了するまで表示され続けます。 |
POAP モードを終了すると、通常のインタラクティブなセットアップ スクリプトが開始されます。POAP モードを続行すると、前面パネルのすべてのインターフェイスがレイヤ 2 モードにセットアップされます。それにより、デバイスがレイヤ 2 フォワーディングに参加しないことが保証されます。
USB 検出フェーズ
POAPが開始されると、プロセスにより、POAP 設定スクリプト ファイル(Python スクリプト ファイル、poap_script.py)、設定ファイル、システムおよびキックスタート イメージについて、アクセス可能なすべての USB デバイスのルート ディレクトリを検索します。
コンフィギュレーション スクリプト ファイルが USB デバイスにある場合は、POAP はコンフィギュレーション スクリプトの実行を開始します。コンフィギュレーション スクリプト ファイルが USB デバイスに存在しない場合は、POAP は DHCP の検出を実行します(障害が発生した場合は、POAP が成功または手動で POAP プロセスを停止するまで、POAP プロセスは USB 検出と DHCP 検出を交互に実行します)。
設定スクリプトで指定されたソフトウェア イメージおよびスイッチ コンフィギュレーション ファイルが存在する場合、POAP は、それらのファイルを使用して、ソフトウェアをインストールし、スイッチを設定します。ソフトウェア イメージおよびスイッチ コンフィギュレーション ファイルが USB デバイスに存在しない場合、POAP はクリーン アップをして DHCP フェーズを最初から開始します。
DHCP 検出フェーズ
スイッチは、すべてのアクティブ インターフェイス(mgmt インターフェイスを含む)で、DHCP サーバからの DHCP オファーを要請する DHCP 検出メッセージを送信します。Cisco Nexus スイッチ上の DHCP クライアントは、クライアント ID オプションにスイッチ シリアル番号または MAC アドレスを使用して、それ自体を DHCP サーバに識別させます。DHCP サーバはこの ID を使用して、IP アドレスやスクリプト ファイル名などの情報を DHCP クライアントに返すことができます。
POAP には、3600 秒(1 時間)以上の DHCP リース期間が必要です。POAP は、DHCP リース期間を確認します。DHCP リース期間が 3600 秒(1 時間)に満たない場合、POAP は DHCP ネゴシエーションを実行しません。
-
オプション 66(TFTP サーバ名)、オプション 150(TFTP サーバ アドレス):DHCP サーバは、DHCP クライアントに TFTP サーバ名または TFTP サーバのアドレスをリレーします。DHCP クライアントはこの情報を使用して TFTP サーバに接続し、スクリプト ファイルを取得します。
-
IP アドレス
-
デフォルト ゲートウェイ
-
オプション 67(ブートファイル名):DHCP サーバは、DHCP クライアントにブートファイル名をリレーします。ブートファイル名には、TFTP サーバ上のブートファイルへの完全パスが含まれます。DHCP クライアントは、この情報を使用してスクリプト ファイルをダウンロードします。
要件を満たす複数の DHCP オファーが受信された場合は、1 つのオファーがランダムに選択されます。デバイスは、選択された DHCP サーバとの DHCP ネゴシエーション(要求と確認応答)を実行し、DHCP サーバはスイッチに IP アドレスを割り当てます。POAP 処理の後続のステップでエラーが発生すると、IP アドレスは DHCP に戻されます。
要件を満たす DHCP オファーが存在しない場合、スイッチは DHCP ネゴシエーション(要求と確認応答)を実行せず、IP アドレスは割り当てられません。POAP プロセスは、成功するか、手動で POAP プロセスを中断するまで再起動されます。
POAP の動的なブレークアウト
Cisco NX-OS Release 7.0(3)I4(1) から、POAP はブレークアウトされたポートのいずれかの背後にある DHCP サーバ を検出するため、ポートを動的にブレークアウトします。以前はブレークアウト ケーブルがサポートされていなかったため、POAP に使用される DHCP サーバは、通常のケーブルに直接接続する必要がありました。
POAP はどのブレークアウト マップ(たとえば、10gx4、50gx2、25gx4、10gx2)が DHCP サーバに接続されたリンクを立ち上げるかを決定します。いずれのポートでもブレークアウトがサポートされていない場合、POAP は動的なブレークアウト プロセスをスキップします。ブレークアウト ループの完了後、POAP は 通常どおり DHCP 検出フェーズを進めます。
(注) |
動的なブレークアウトの詳細については、デバイスのインターフェイス コンフィギュレーション ガイドを参照してください。 |
スクリプトの実行フェーズ
デバイスが DHCP 確認応答の情報を使用してデバイス自体をブートストラップすると、スイッチはスクリプト ファイルを TFTP サーバまたは HTTP サーバからダウンロードします。
スイッチは、コンフィギュレーション スクリプトを実行します。これにより、ソフトウェア イメージのダウンロードとインストール、およびスイッチ固有のコンフィギュレーション ファイルのダウンロードが行われます。
ただし、この時点では、コンフィギュレーション ファイルはスイッチに適用されません。スイッチ上で現在実行中のソフトウェア イメージがコンフィギュレーション ファイル内の一部のコマンドをサポートしていない可能性があるためです。新しいソフトウェア イメージがインストールされた場合、スイッチのリブート後にそのソフトウェア イメージの実行が開始されます。その時点でスイッチにコンフィギュレーションが適用されます。
(注) |
スイッチの接続が切断されると、スクリプトは停止し、スイッチはオリジナルのソフトウェア イメージとブートアップ変数をリロードします。 |
インストール後のリロード フェーズ
スイッチが再起動され、存在する場合既存の設定をクリアして、アップグレードされたソフトウェア イメージに設定を適用(再生)します。その後、スイッチは、実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーします。