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 スクリプトの安全なダウンロード
Cisco NX-OS リリース 10.2(3)F 以降、POAP スクリプトを安全にダウンロードするオプションがあります。POAP 機能を備えたデバイスが起動し、スタートアップ設定が見つからない場合、デバイスは POAP モードに入り、DHCP サーバーを検索、インターフェイス IP アドレス、ゲートウェイ、および DNS サーバーの IP アドレスを使用して自身をブートストラップします。また、デバイスは HTTPS サーバーの IP アドレスを取得し、POAP スクリプトを安全にダウンロードします。このスクリプトにより、スイッチは適切なソフトウェア イメージと構成ファイルをダウンロードしてインストールできます。
POAP スクリプトを安全にダウンロードするには、特定の POAP オプションを選択する必要があります。Cisco NX-OS リリース 10.2(3)F までは、POAP は IPv4 の場合はオプション 66 と 67、IPv6 の場合はオプション 77 と 15 を使用して、ブート スクリプト情報を抽出していました。ただし、スクリプトの転送は http を使用するため、あまり安全ではありません。Cisco NX-OS リリース 10.2(3)F 以降、オプション 43 は IPv4 のセキュア POAP 関連のプロビジョニング スクリプト情報を指定し、オプション 17 は IPv6 の同じことを指定します。さらに、これらのオプションにより、POAP は安全な方法でファイル サーバーに到達できます。POAP オプション 66、67、77、および 15 は、Cisco NX-OS Release10.2(3)F で引き続きサポートされます。さらに、オプション 43 または 17 を使用している場合は、必要に応じて、以前のオプションをフォールバック オプションとして使用できます。Cisco NX-OS リリース 10.4(1)F 以降では、セキュア POAP 用の単一の .pem 証明書の代わりにルート CA バンドルを使用できます。
(注) |
オプション 43 とオプション 17 の両方の最大文字長は 512 バイトです。 |
オプション 43 およびオプション 17 で使用できるサブオプションについては、次のセクションで説明します。
IPv4
オプション 43 には、IPv4 の次のサブオプションがあります。
-
option space poap length width 2;
-
option poap.version code 1 = unsigned integer 8;
(注)
このサブオプションは必須です。
-
option poap.ca_list code 50 = text;
-
option poap.url code 2 = text;
(注)
このサブオプションは必須です。
-
option poap.version code 1 = unsigned integer 8;
-
option poap.ntp code 3 = ip-address;
(注)
このサブオプションは、IPv4(オプション 43)でのみサポートされます。
-
option poap.version code 1 = unsigned integer 8;
(注)
フラグは、クライアントでのサーバー証明書の検証をスキップするために使用されます。
host dhclient-n9kv {
hardware ethernet 00:50:56:85:c5:30;
fixed-address 3.3.3.1;
default-lease-time 3600;
option broadcast-address 192.168.1.255;
#option log-servers 1.1.1.1;
max-lease-time 3600;
option subnet-mask 255.255.255.0;
option routers 10.77.143.1;
#option domain-name-servers 1.1.1.1;
vendor-option-space poap;
option poap.version 1;
option poap.ca_list "https://<ip>/poap/ca_file1.pem, https://<ip>/poap/ca_file2.pem";
option poap.url "https://<url>/poap.py";
option poap.debug 1;
option poap.ntp 10.1.1.39;
option poap.flag 0;
}
IPv6
オプション 17 には、IPv6 の次のサブオプションがあります。
-
option space poap_v6 length width 2;
-
option poap_v6.version code 1 = unsigned integer 8;
(注)
このサブオプションは必須です。
-
option poap_v6.ca_list code 50 = text;
-
option poap.url code 2 = text;
(注)
このサブオプションは必須です。
-
option poap_v6.debug code 51 = unsigned integer 8;
-
option vsio.poap_v6 code 9 = encapsulate poap_v6;
option dhcp6.next-hop-rt-prefix code 242 = { ip6-address, unsigned integer 16,
unsigned integer 16, unsigned integer 32, unsigned integer 8, unsigned integer 8, ip6-address };
option dhcp6.bootfile-url code 59 = string;
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;
option dhcp6.bootfile-url "tftp://2003::1111/poap_github_v6.py";
vendor-option-space poap_v6;
option poap_v6.version 1;
option poap_v6.ca_list "https://<ip>/new_ca.pem,https://<ip>/another_ca.pem";
option poap_v6.url "https://<ip>/poap_github_v4.py";
option poap_v6.debug 1;
}
安全な POAP のネットワーク要件
POAP には、次のネットワーク インフラが必要です。
-
インターフェイス IP アドレス、ゲートウェイ アドレス、およびドメイン ネーム システム(DNS)サーバーをブートストラップする DHCP サーバー。
-
ソフトウェア イメージのインストールと構成のプロセスに使用される POAP スクリプトを含む HTTP サーバー。
(注)
-
POAP スクリプトの安全なダウンロードの場合、TFTP サーバーは HTTPS サーバーに置き換えられます。したがって、この章の TFTP サーバーに関連する内容を読むときは、TFTP サーバーを HTTPS サーバーとして読むことを忘れないでください。
-
-
必要なソフトウェア イメージと構成ファイルが保管されている 1 台以上のサーバー。
導入シナリオ
Cisco デバイスには、Secure Unique Device Identifier (SUDI) と呼ばれる一意の識別子があります。ハードウェア SUDI は、暗号化、暗号解読、署名、操作対象のデータの通過を許可する検証などの非対称キー操作に使用できます。シスコ以外のすべてのデバイスは、非 SUDI デバイスとして分類されます。非 SUDI デバイスの場合、ファイル サーバーを認証するためにルート CA バンドルが必要です。ただし、ファイル サーバーは、SUDI または非 SUDI デバイスのいずれかでホストできます。
これらすべての機能に基づいて、次の展開シナリオのいずれかを使用して、POAP スクリプトを安全な方法でダウンロードできます。
ファイル サーバーとしての SUDI 対応デバイス
SUDI がサポートするデバイスは Cisco デバイスです。以前の実装とは異なり、DHCP サーバーは http/tftp ではなく https の場所を提供するようになりました。このシナリオでは、必要なソフトウェア イメージと構成ファイルを含む 1 つ以上のサーバーを除き、DHCP サーバーと SUDI がサポートするスクリプト サーバー(HTTPS サーバー)のみが必要です。
(注) |
SUDI は TLSv1.2 以下のみをサポートします。また、SUDI ソリューションは https を使用した安全なダウンロードのみを考慮し、sftp は考慮しません。 |
SUDI 対応デバイスのワークフローは次のとおりです。
-
起動デバイスは SUDI 対応であり、SUDI 証明書を検証するために必要なトラスト ストアがあります。
-
起動デバイスは DHCP 検出を送信します
-
DHCP サーバーは、https サーバーの詳細で起動デバイスに応答します
-
デバイスは、標準の SSL API を使用して安全なチャネルを確立します
-
認証は両側でSUDIを検証することで行われます
-
poap.py のダウンロード
ファイル サーバーとしての SUDI 対応デバイス
このシナリオでは、ルート CA バンドルをブート デバイスにインストールする必要があります。認証にはルート CA バンドルが必要です。ここでは、必要なソフトウェア イメージと構成ファイルを含む 1 つ以上のサーバー以外に、DHCP サーバー、中間デバイス、および非 SUDI サポート スクリプト サーバー(HTTPS サーバー)が必要です。
DHCP オファーには、ルート CA バンドルが利用可能な中間サーバーの詳細が含まれています。中間デバイスは SUDI をサポートする必要があります。ブート デバイスは中間デバイスを使用してルート CA バンドルをダウンロードしてインストールし、ファイル サーバーと通信します。中間デバイスを最初にプロビジョニングする必要があります。
非対応 SUDI デバイスのワークフローは次のとおりです。
-
起動デバイスは SUDI 対応であり、SUDI 証明書を検証するために必要なトラスト ストアがあります。
-
ルート CA バンドルを使用してサーバーをホストする中間デバイスも SUDI 対応です
-
起動デバイスは DHCP 検出を送信します
-
DHCP サーバーは、https サーバーの詳細とルート CA サーバーの詳細で起動デバイスに応答します
-
ブート デバイスが中間デバイスに到達し、CA バンドルを取得して、それをトラスト ストアに追加します
-
起動デバイスがファイル サーバーに到達し、poap.py をダウンロードします。
ベンチマーク構成されたデバイス
非 SUDI サポート スクリプト サーバーのルート CA 証明書チェーン ファイルは、ベンチマーク構成済みサーバーの /bootflash/poap/sudi_fs に配置する必要があります。
(注) |
ベンチ構成済みデバイスのポートを変更するには、file-server <port-number> コマンドを使用します。ポート 80(http)やポート 443(https)などの標準ポートの使用は避けてください。 file-server <port-number> コマンドは、管理インターフェイスを介してコンテンツを提供するだけです。 |
古いイメージで出荷されたデバイスの安全な POAP
セキュア POAP のサポートは、安全な POAP 機能を備えたイメージとともに出荷されるデバイスでのみ利用できます。
デバイスに安全な POAP 機能がない場合は、レガシー DHCP オプションを使用して、デバイスをセキュア POAP をサポートする新しいバージョンのイメージに移動します。次に、これらのデバイスをリロードして、安全な POAP 機能を使用できます。
安全な POAP のトラブルシューティング
安全な POAP に関するデバッグ情報を収集するには、次の手順を実行します。
-
オプション 43 の IPv4 のデバッグ オプションを 1 に設定し、オプション 17 の IPv6 のデバッグ オプションを設定します。
デバッグ オプションは、追加のログを有効にします。
-
スイッチが POAP の 1 サイクルを実行できるようにします。
-
POAP を中止します。
-
システムが起動したら、show tech-support poap コマンドを実行します。
このコマンドは、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 コンフィギュレーション スクリプト
シスコから提供される参照スクリプトでは、次の機能がサポートされています。
-
スイッチ固有の識別子(シリアル番号など)を取得します。
-
スイッチ上に nx-os ソフトウェア イメージがまだ存在しない場合は、それををダウンロードします。nx-os イメージがスイッチ上にインストールされ、次回のリブート時に使用されます。
-
ダウンロードされた設定がスイッチの次回のリブート時に適用されるようにスケジュールします。
-
スタートアップ構成として構成を保存します。
Python プログラミング言語と Tool Command Language(Tcl)を使用して開発された構成スクリプトのサンプルが用意されています。これらのスクリプトのいずれかを、自分のネットワーク環境に合わせてカスタマイズできます。次のリンクで Python スクリプトにアクセスして、Cisco Nexus 9000 シリーズ スイッチ上の POAP を実行できます。https://github.com/datacenter/nexus9000/tree/master/nx-os/poap。
Python プログラミング言語は CLI Commands を実行できる 2 つの API を使用します。これらの API については、次の表で説明します。これらの API の引数は CLI コマンドの文字列です。
API |
説明 |
---|---|
cli() |
制御文字/特殊文字を含む CLI コマンドの未処理の出力を返します。 |
clid() |
XML をサポートする CLI コマンドの場合、この API はコマンド出力を Python ディクショナリとして返します。 この API は、show コマンドの出力の検索に役立ちます。 |
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 サーバーからダウンロードされます。
スイッチは、コンフィギュレーション スクリプトを実行します。これにより、ソフトウェア イメージのダウンロードとインストール、およびスイッチ固有のコンフィギュレーション ファイルのダウンロードが行われます。
ただし、この時点では、構成ファイルはスイッチに適用されません。スイッチ上で現在実行中のソフトウェア イメージが構成ファイル内の一部のコマンドをサポートしていない可能性があるためです。新しいソフトウェア イメージがインストールされた場合、スイッチのリブート後にそのソフトウェア イメージの実行が開始されます。その時点でスイッチにコンフィギュレーションが適用されます。
(注) |
スイッチの接続が切断されると、スクリプトは停止し、スイッチはオリジナルのソフトウェア イメージとブートアップ変数をリロードします。 |
インストール後のリロード フェーズ
スイッチが再起動し、アップグレードされたソフトウェア イメージ上でコンフィギュレーションが適用(リプレイ)されます。その後、スイッチは、実行コンフィギュレーションをスタートアップ コンフィギュレーションにコピーします。