PowerOn Auto Provisioning について
PowerOn Auto Provisioning(POAP)は、ネットワークに初めて導入された Cisco Nexus スイッチに対して、ソフトウェア イメージのアップグレードと構成ファイルのインストールのプロセスを自動化します。
POAP 機能を備えたデバイスが起動し、スタートアップ設定が見つからない場合、デバイスは POAP モードに入り、DHCP サーバーを検索、インターフェイス IP アドレス、ゲートウェイ、および DNS サーバーの IP アドレスを使用して自身をブートストラップします。また、TFTP サーバーの IP アドレスを取得し、ダウンロードするためのスイッチを有効化し、適切なソフトウェアイメージと構成ファイルをダウンロードしてインストールする構成スクリプトをダウンロードします。
(注) |
DHCP 情報は、POAP 処理中にだけ使用されます。 |
POAP のためのネットワーク要件
POAP には、次のネットワーク インフラが必要です。
-
インターフェイス IP アドレス、ゲートウェイ アドレス、およびドメイン ネーム システム(DNS)サーバーをブートストラップする DHCP サーバー。
-
ソフトウェア イメージのインストールと構成のプロセスを自動化する構成スクリプトが保管されている TFTP または HTTP サーバー。
-
必要なソフトウェア イメージと構成ファイルが保管されている 1 台以上のサーバー。
-
USB を使用する場合、POAP に DHCP サーバーまたは TFTP サーバーは必要ありません。
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 スクリプトを使用する前に、次の操作を実行します。
-
スクリプトの上部にあるオプション ディクショナリを編集して、セットアップに関連するすべてのオプションがスクリプトに含まれるようにします。デフォルトを(デフォルトのオプション機能で)直接変更しないでください。
-
シェル コマンドを使用して、表示されているように 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
サーバーからファイルをダウンロードするときに使用するユーザー名。
-
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;
}
次の例は、IPv6 を介した POAP の DHCPv6 の設定を示しています。
default-lease-time 3600;
max-lease-time 3600;
log-facility local7;
subnet6 2003::/64 {
# This statement configures actual values to be sent
# RTPREFIX option code = 243, RTPREFIX length = 22
# Ignore value 22. It is something related to option-size RT_PREFIX option length.
# lifetime = 9000 seconds
# route ETH1_IPV6_GW/64
# metric 1
option dhcp6.next-hop-rt-prefix 2003::2222 243 22 9000 0 1 ::;
#ipv6 ::/0 2003::2222
#Another example - support not there in NXOS - CSCvs05271:
#option dhcp6.next-hop-rt-prefix 2003::2222 243 22 9000 112 1 2003::1:2:3:4:5:0;
#ipv6 2003::1:2:3:4:5:0/112 2003::2222
# Additional options
#option dhcp6.name-servers fec0:0:0:1::1;
#option dhcp6.domain-search "domain.example";
range6 2003::b:1111 2003::b:9999;
#range6 2003::c:2222 2003::c:2222;
option dhcp6.bootfile-url "tftp://2003::1111/poap_github_v6.py";
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 プロセスには次のフェーズがあります。
-
電源投入
-
USB の検出
-
DHCP の検出
-
スクリプトの実行
-
インストール後のリロード
これらのフェーズ内では、他の処理や分岐点が発生します。次に、POAP 処理のフロー図を示します。
電源投入フェーズ
デバイスの電源を初めて投入すると、デバイスは製造時にインストールされたソフトウェア イメージをロードし、起動に使用する構成ファイルを探します。構成ファイルが見つからなかった場合、POAP モードが開始されます。
起動中、POAP を中止して通常のセットアップに進むかどうかを確認するプロンプトが表示されます。POAP を終了することも、続行することもできます。
(注) |
POAP を続行する場合、ユーザの操作は必要ありません。POAP を中止するかどうかを確認するプロンプトは、POAP 処理が完了するまで表示され続けます。 |
POAP モードを終了すると、通常のインタラクティブなセットアップ スクリプトが開始されます。POAP モードを続行すると、すべての前面パネルのインターフェイスはデフォルト設定で構成されます。
USB 検出フェーズ
POAP が開始すると、プロセスはアクセス可能なすべての USB デバイスのルート ディレクトリから POAP スクリプト ファイル(Python スクリプト ファイル、poap_script.py)、構成ファイル、およびシステムとキックスタート イメージを検索します。
スクリプト ファイルが USB デバイスで見つかった場合、POAP はスクリプトの実行を開始します。スクリプト ファイルが USB デバイスに存在しない場合は、POAP は DHCP の検出を実行します(障害が発生した場合は、POAP が成功または手動で POAP プロセスを停止するまで、POAP プロセスは USB 検出と DHCP 検出を交互に実行します)。
構成スクリプトで指定されたソフトウェア イメージおよびスイッチ構成ファイルが存在する場合、POAP は、それらのファイルを使用して、ソフトウェアをインストールし、スイッチを構成します。ソフトウェア イメージおよびスイッチ構成ファイルが USB デバイスに存在しない場合、POAP はクリーン アップをして DHCP フェーズを最初から開始します。
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 ネゴシエーションを実行しません。
-
TFTP サーバ名または TFTP サーバ アドレス:DHCP サーバは TFTP サーバ名または TFTP サーバ アドレスを DHCP クライアントに中継します。DHCP クライアントはこの情報を使用して TFTP サーバーに接続し、スクリプト ファイルを取得します。
-
ブートファイル名:DHCP サーバは DHCP クライアントにブートファイル名を中継します。ブートファイル名には、TFTP サーバ上のブートファイルへの完全パスが含まれます。DHCP クライアントは、この情報を使用してスクリプト ファイルをダウンロードします。
要件を満たす複数の DHCP オファーが受信されると、最初に到着したものが受け入れられ、POAP プロセスは次の段階に進みます。デバイスは、選択された DHCP サーバとの DHCP ネゴシエーション(要求と確認応答)を実行し、DHCP サーバはスイッチに IP アドレスを割り当てます。POAP 処理の後続のステップでエラーが発生すると、IP アドレスは DHCP に戻されます。
要件を満たす DHCP オファーが存在しない場合、スイッチは DHCP ネゴシエーション(要求と確認応答)を実行せず、IP アドレスは割り当てられません。
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 サーバーからダウンロードされます。
スイッチは、コンフィギュレーション スクリプトを実行します。これにより、ソフトウェア イメージのダウンロードとインストール、およびスイッチ固有のコンフィギュレーション ファイルのダウンロードが行われます。
ただし、この時点では、構成ファイルはスイッチに適用されません。スイッチ上で現在実行中のソフトウェア イメージが構成ファイル内の一部のコマンドをサポートしていない可能性があるためです。新しいソフトウェア イメージがインストールされた場合、スイッチのリブート後にそのソフトウェア イメージの実行が開始されます。その時点でスイッチにコンフィギュレーションが適用されます。
(注) |
スイッチの接続が切断されると、スクリプトは停止し、スイッチはオリジナルのソフトウェア イメージとブートアップ変数をリロードします。 |
インストール後のリロード フェーズ
スイッチが再起動し、アップグレードされたソフトウェア イメージ上でコンフィギュレーションが適用(リプレイ)されます。その後、スイッチは、実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーします。