Apstra ZTP(デバイス)
Apstra ZTPの概要
このドキュメントは、Apstra ZTP 4.1バージョンに適用されます。使用しているJuniper Apstraバージョンに対応するApstra ZTPバージョンを使用します。(4.0より前のApstraバージョンでは、Apstra ZTPバージョン1.0.0または2.0.0が使用されています。詳細については、 Juniper Apstra 3.3.0ユーザーガイドを参照してください)。
Apstra ZTPは、データセンターインフラストラクチャシステム向けのゼロタッチプロビジョニングサーバーです。(Apstra ZTPは、Apstra環境でのZTP実装に以前使用されていたコミュニティでサポートされているAeon-ZTPSソフトウェアに代わるものです。Apstra ZTPにより、基盤となるNOSメカニズムの違いを考慮することなく、Apstraデータセンターデバイスをブートストラップできます。ZTPは、Apstraの観点から、デバイスを最初の起動から、デバイスシステムエージェントを介してApstraによって管理されるポイントまでを行うプロセスです。
ZTP の構成方法に応じて、プロセスに以下の機能が含まれる場合があります(ただし、必ず含まれるわけではありません)。
- DHCP サービス
- デバイス管理者/root パスワードの設定
- デバイス・システム・エージェント用のデバイス・ユーザーの作成
- NOSのアップグレード/ダウングレード
- オンボックスまたはオフボックスデバイスシステムエージェントのインストール
ベンダー固有の情報も参照してください。
ZTPプロセス中に問題が発生した場合にデバイスからロックアウトされないように、ZTPはデフォルトのハードコードされた認証情報を使用します。これらの認定資格は次のとおりです。
- root /admin
- aosadmin/ aosadmin
Apstraが提供するVMイメージ(.ova
、 、.vhdx.gz
)を使用するか、独自のZTPサーバーを構築し、.qcow2.gz
既存のZTP/DHCPプロセスの一部としてApstraが提供するデバイスプロビジョニングスクリプトを使用して、ブートプロセスの一環としてデバイスにエージェントを自動的にインストールできます。Apstra ZTPリファレンスの実装は、以下の3つのフェーズで構成されています。
- 汎用 DHCP フェーズ
- デバイスは、DHCP を介して IP アドレスを要求します。
- デバイスは、割り当てられたIPアドレスと実行するスクリプトへのポインタ(またはApstraが提供するVMイメージを使用している場合はインストールするOSイメージ)を受け取ります。
- 初期化フェーズ
- デバイスはTFTPを使用してZTPスクリプトをダウンロードします。
- デバイスはダウンロードしたスクリプトを実行して、管理する準備をします。これには、デバイスがサポートされているOSを実行していることを確認することが含まれます。
- エージェントのインストールフェーズ
- ZTP スクリプトは、デバイスにデバイス システム エージェントをインストールするための API 呼び出しを行います。
Apstra ZTP VMサーバーリソース要件
Apstra ZTPは、DHCP、HTTP、およびTFTPサーバーを実行するUbuntu 18.04 LTSサーバーとして動作し、Apstraが提供するZTPスクリプトを使用して、環境に合わせてカスタマイズする必要があります。以下の表は、実稼働環境における最小サーバー仕様を示しています。
リソース | 設定 |
---|---|
ゲスト OS タイプ | Ubuntu 18.04 LTS 64 ビット |
メモリ | 2 GB |
Cpu | 1 vCPU |
ディスク ストレージ | 64 GB |
ネットワーク | 1 つ以上のネットワーク アダプター。最初は DHCP 用に設定 |
Apstra ZTPネットワーク要件
送信元 | 宛先 | ポート | の役割 |
---|---|---|---|
デバイスエージェント | DHCP サーバー(更新)& ブロードキャスト(リクエスト) | udp/67 -> udp/68 | DHCP クライアント |
デバイスエージェント | Apstra ZTP | 任意の -> tcp/80 | ブートストラップスクリプトとAPIスクリプト |
AristaおよびCiscoデバイスエージェント | Apstra ZTP | 任意の -> udp/69 | POAP および ZTP 向け TFTP |
Apstra ZTP | コント ローラー | 任意の -> tcp/443 | デバイスシステムエージェントインストーラAPI |
ZTP固有のネットワーク要件に加えて、Apstra ZTPサーバーとデバイスエージェントはコントローラへの接続を必要とします。詳細については、 Juniper Apstraのインストールおよびアップグレードガイド の必須通信ポートを参照してください。
Apstra GUIからデバイスZTPステータスを監視できます。左側のナビゲーション メニューから、[ デバイス > ZTP ステータス > デバイス] に移動します。
DHCP および ZTP とやり取りする各デバイスには、既知の場合はシステム ID(シリアル番号)、ZTP ステータス、ZTP の最新イベント、デバイスステータスが最後に更新されたときが記載されています。
デバイスのDHCPおよびZTPの完全なログを表示するには、「ログを表示」アイコンをクリックします。
DHCP または ZTP と通信するすべてのデバイスが表示されます。デバイスのログがもう必要ない場合は、[ 削除 ] ボタンをクリックします。
すべてのプロセスのログファイルは ディレクトリにあります /containers_data/logs
。
root@apstra-ztp:/containers_data/logs# ls -l total 7132 -rw-r--r-- 1 root root 6351759 Oct 28 17:47 debug.log drwxr-xr-x 2 root root 4096 Oct 27 19:20 devices -rw------- 1 root root 0 Oct 23 20:02 dhcpd.leases -rw-r--r-- 1 root root 926980 Oct 28 17:39 info.log -rw------- 1 root root 58 Oct 23 20:02 README -rw------- 1 root root 469 Oct 27 02:13 rsyslog.log root@apstra-ztp:/containers_data/logs# tail info.log 2020-10-28 17:16:38,786 root.status INFO Incoming: dhcpd dhcpd[18]: DHCPACK on 192.168.59.9 to 04:f8:f8:6b:36:91 via eth0 2020-10-28 17:18:04,299 root.status INFO Incoming: dhcpd dhcpd[18]: DHCPREQUEST for 192.168.59.9 from 04:f8:f8:6b:36:91 via eth0 2020-10-28 17:18:04,300 root.status INFO Incoming: dhcpd dhcpd[18]: DHCPACK on 192.168.59.9 to 04:f8:f8:6b:36:91 via eth0 2020-10-28 17:19:29,250 root.status INFO Incoming: dhcpd : -- MARK -- 2020-10-28 17:19:29,442 root.status ERROR Failed to update status of all containers: /api/ztp/service 404 b'{"errors":"Resource not found"}' 2020-10-28 17:33:29,353 root.status INFO Incoming: tftp : -- MARK -- 2020-10-28 17:33:29,538 root.status ERROR Failed to update status of all containers: /api/ztp/service 404 b'{"errors":"Resource not found"}' 2020-10-28 17:33:34,768 root.status INFO Incoming: status : -- MARK -- 2020-10-28 17:39:29,349 root.status INFO Incoming: dhcpd : -- MARK -- 2020-10-28 17:39:29,539 root.status ERROR Failed to update status of all containers: /api/ztp/service 404 b'{"errors":"Resource not found"}' root@apstra-ztp:/containers_data/logs#
Apstra GUIからApstra ZTPサーバー上のZTPサービスを監視できます。左側のナビゲーション メニューから、[ デバイス > ZTP ステータス > サービス] に移動します。
各サービス名には、Docker IPアドレス、サービスステータス、およびサービスステータスが最後に更新されたときが含まれます。
Apstra ZTP VMのダウンロードと導入
静的管理IPアドレス(Apstra ZTP)の設定
デフォルトでは、Apstra ZTPサーバーはDHCPを介して eth0インターフェイスにIPアドレスの割り当てを試みます。Apstra ZTPサーバーをDHCPサーバーとして使用する場合は、静的管理IPアドレスを設定する必要があります。
ZTPユーザーを設定する
API書き込みアクセス(管理者など)を持つ設定済みのApstra GUIユーザーを使用できますが、事前定義されたロール device_ztp割り当てられた指定ユーザー(「ztp」など)を作成することをお勧めします。device_ztpロールを使用すると、そのロールを持つユーザーは、コントローラーにAPI呼び出しを行い、デバイスシステムエージェントのインストールを要求できます。詳細については、「 ユーザー/ロール管理」を参照してください。
DHCP サーバーの設定
Apstraソフトウェアには、デバイス管理ネットワーク用のISC DHCPサーバーが付属しています。別のDHCPサーバーを使用する場合は、Apstraが提供するDHCPサーバーのこのガイドに記載されているのと同じオプションを設定する必要があります。
たとえば、Juniper Junos OSまたはJunos OS Evolvedデバイスを使用している場合、サーバーに以下が含まれていることを確認して、デバイスが適切な設定ファイルを読み込む必要があります。
option space JUNIPER option JUNIPER.config-file-name code 1 = text option JUNIPER-encapsulation code 43 = encapsulate JUNIPER option user-class-information code 77 = text; class "juniper" { match if (substring(option vendor-class-identifier, 0, 7) = "Juniper") and not (suffix(option user-class-information, 4) = "-EVO"); option JUNIPER.config-file-name "junos_apstra_ztp_bootstrap.sh"; } class "juniper-evo" { match if (substring(option vendor-class-identifier, 0, 7) = "Juniper") and (suffix(option user-class-information, 4) = "-EVO"); option JUNIPER.config-file-name "ztp.py"; }
DHCP設定ファイルは、ディレクトリ内のApstra ZTP VMにあります /containers_data/dhcp
。
admin@apstra-ztp:~$ sudo ls -l /containers_data/dhcp total 16 -rw------- 1 root root 2533 Oct 21 00:35 dhcpd.conf -rw------- 1 root root 146 Oct 21 00:35 Dockerfile -rw------- 1 root root 932 Oct 21 00:35 init.sh -rw------- 1 root root 1896 Oct 21 00:35 rsyslog.conf admin@apstra-ztp:~$
すべての設定ファイルは によってroot
所有されます。コマンドを使用するようにroot
コマンドを実行する場合、または コマンドを使用したsudo
後にsudoを使用するroot
sudo -s
必要があります。
ZTP のコントローラ IP アドレスの設定
Apstra ZTPサーバー上のファイルに /containers_data/status/app/aos.conf
コントローラIPとApstra ZTPユーザー名を設定します。
admin@apstra-ztp:~$ sudo nano /containers_data/status/app/aos.conf admin@apstra-ztp:~$ sudo nano /containers_data/status/app/aos.conf
{ "ip": "192.168.59.3", "user": "ztp", "password": "ztp-user-password" }
ip |
コントローラの IP アドレス |
user |
ZTP または管理者ユーザーのユーザー名 |
password |
ユーザーのパスワード |
Apstra ZTP設定ファイルの編集
Apstra ZTP VMにはTFTPとngginx HTTPサーバーが含まれています。これらのサーバーは設定を必要としません。どちらのサーバーもディレクトリからファイルを /containers_data/tftp
提供します。(Cumulusは、Apstraバージョン4.1.0ではサポートされていません。
admin@apstra-ztp:~$ sudo ls -l /containers_data/tftp/ total 232 -rwxr-xr-x 1 root root 2448 Apr 24 00:47 config_verifier.py -rwxr-xr-x 1 root root 393 Apr 24 00:47 container_init.sh -rwxr-xr-x 1 root root 170 Apr 24 00:47 cumulus_custom.sh -rwxr-xr-x 1 root root 55 Apr 24 00:47 cumulus_license_file -rwxr-xr-x 1 root root 192 Apr 24 00:47 Dockerfile -rwxr-xr-x 1 root root 107 Apr 24 00:47 eos_custom.sh -rwxr-xr-x 1 root root 5393 Apr 24 00:47 junos_apstra_ztp_bootstrap.sh -rwxr-xr-x 1 root root 1799 Apr 24 00:47 junos_custom.sh -rwxr-xr-x 1 root root 86 Apr 24 00:47 nxos_custom.sh -rwxr-xr-x 1 root root 205 Apr 24 00:47 poap-md5sum -rwxr-xr-x 1 root root 1843 Apr 24 00:47 rsyslog.conf -rwxr-xr-x 1 root root 170 Apr 24 00:47 sonic_custom.sh -rwxr-xr-x 1 root root 1910 Apr 24 00:47 ztp.json -rwxr-xr-x 1 root root 86599 Apr 24 00:48 ztp.py -rw------- 1 root root 86556 Apr 24 00:48 ztp.py.md5 admin@apstra-ztp:~$
この ztp.json
ファイルには、Apstra ZTPスクリプト ztp.py
のすべての設定が含まれています。
ztp.json
viまたはナノテキストエディタでファイルを編集します。admin@apstra-ztp:~$ sudo nano /containers_data/tftp/ztp.json
- このファイルは
ztp.json
、以下のように整理されています。デフォルト - より具体的なキーが定義されていない限り、すべてのデバイスに値が使用されます。 "defaults": { "device-root-password": "root-password-123", "device-user": "admin", "device-user-password": "admin-password-123", "system-agent-params": { "agent_type": "onbox", "install_requirements": false } }
プラットフォーム - より具体的なキーが定義されていない限り、値はネットワークプラットフォームのすべてのデバイス(「nxos」、「eos」、「junos」、「sonic」)に使用されます。 "sonic": { "sonic-versions": ["SONiC-OS-3.4.0-Enterprise_Advanced"], "sonic-image": "http://10.85.24.52/sonic/3.4.0/sonic-3.4.0-GA-adv-bcm.bin", "device-root-password": "admin", "device-user": "admin", "device-user-password": "admin", "custom-config": "sonic_custom.sh", "system-agent-params": { "agent_type": "onbox", "job_on_create": "install" } }
モデル - 値は、特定のデバイス モデル(「QFX10002-36Q」など)のすべてのデバイスに使用されます。 "QFX10002-36Q": { "junos-versions": ["21.2R1-S2.2"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-10-f-x86-64-21.2R1-S2.2-secure-signed.tgz" }
シリアル番号 - 特定のデバイスシリアル番号(「TH0TFD6TCET0015G0015」など)に一致するデバイスに値が使用されます。 "TH0TFD6TCET0015G0015": { "sonic-versions": ["SONiC-OS-4.0.5-Enterprise_Advanced"], "sonic-image": "http://10.85.24.52/sonic/4.0.5/sonic-broadcom-enterprise-advanced-4.0.5-GA.bin" }
より具体的なデータが他のデータよりも優先されます。たとえば、特定のシリアル番号のデータが他のデータよりも優先され、モデル、次にプラットフォーム、最後にデフォルト データが優先されます。
- 次の
ztp.json
ファイルは、次のキーを使用します。junos-versions
- ジュニパーJunosデバイスの有効なバージョン。デバイスがこのリスト内のバージョンを実行していない場合、ZTPはそのイメージでデバイスをjunos-image
アップグレードします。"junos-versions": [ "20.2R2-S3.5" ]
junos-image
- 実行中のバージョンがリスト内のバージョンと一致しない場合に読み込む Juniper Junos TGZ イメージのjunos-versions
ファイル名。- デフォルトでは、イメージ名はZTPサーバーのディレクトリからTFTP経由でZTPサーバー
/container_data/tftp/
から読み込まれます。例えば:"junos-image": "jinstall-host-qfx-5-20.2R2-S3.5-signed.tgz"
-
イメージ転送に任意の HTTP サーバーを使用するには、IP アドレスを持つ有効な HTTP URL を入力します。例えば:
"junos-image": "http://192.168.59.4/jinstall-host-qfx-5-20.2R2-S3.5-signed.tgz"
この例では、コントローラからのHTTPを使用して、Juniper Junosイメージを転送します。
sonic-versions
- SONiCデバイスの有効なバージョン。デバイスがこのリスト内のバージョンを実行していない場合、ZTPはそのイメージでデバイスをsonic-image
アップグレードします。"sonic-versions": [ "SONiC-OS-3.1.0a-Enterprise_Base" ]
sonic-image
- 実行中のバージョンがリスト内のバージョンと一致しない場合に読み込む SONiC ONIE BIN イメージのsonic-versions
ファイル名。- デフォルトでは、イメージ名はZTPサーバーのディレクトリからTFTP経由でZTPサーバー
/container_data/tftp/
から読み込まれます。例えば:"sonic-image": "sonic-3.1.0a-bcm.bin"
- イメージ転送に任意の HTTP サーバーを使用するには、IP アドレスを持つ有効な HTTP URL を入力します。例えば:
"sonic-image": "http://192.168.59.3/sonic-3.1.0a-bcm.bin"
この例では、コントローラからのHTTPを使用してSONiCイメージを転送します。
nxos-versions
- NX-OS デバイスの有効なバージョン。デバイスがこのリスト内のバージョンを実行していない場合、ZTPはそのイメージでデバイスをnxos-image
アップグレードします。"nxos-versions": [ "9.2(2)", "9.3(6)" ]
nxos-image
- 実行中のバージョンがリスト内のバージョンと一致しない場合に読み込む NX-OS イメージのnxos-versions
ファイル名。- デフォルトでは、イメージ名はZTPサーバーのディレクトリからTFTP経由でZTPサーバー
/container_data/tftp/
から読み込まれます。例えば:"nxos-image": "nxos.9.3.6.bin"
- イメージ転送に任意の HTTP サーバーを使用するには、IP アドレスを持つ有効な HTTP URL を入力します。例えば:
"nxos-image": "http://192.168.59.4/nxos.9.3.6.bin"
この例では、ZTP サーバーからの HTTP を使用して Cisco NX-OS イメージを転送します。
eos-versions
- Arista EOSデバイスの有効なバージョン。デバイスがこのリスト内のバージョンを実行していない場合、ZTPはそのイメージでデバイスをeos-image
アップグレードします。"eos-versions": [ "4.22.3M", "4.24.5M" ]
eos-image
- 実行中のバージョンがリスト内のバージョンと一致しない場合に読み込むArista EOS SWIイメージのeos-versions
ファイル名。-
デフォルトでは、イメージ名はZTPサーバーのディレクトリからTFTP経由でZTPサーバー
/container_data/tftp/
から読み込まれます。例えば:"eos-image": "EOS-4.24.5M.swi"
-
イメージ転送に任意の HTTP サーバーを使用するには、IP アドレスを持つ有効な HTTP URL を入力します。例えば:
"eos-image": "http://192.168.59.3/dos_images/EOS-4.24.5M.swi"
この例では、コントローラからのHTTPを使用してArista EOSイメージを転送します。
device-root-password
- ZTPプロセスは、デバイスのrootパスワードをこの値に設定します。Arista EOSおよびCisco NX-OSデバイスでは、device-root-password
を使用してシステムadmin
パスワードのパスワードを設定します。"device-root-password": "root-admin-password"
device-user
/device-user-password
- デバイスシステムエージェントに使用されるユーザー名とパスワード。また、必要に応じて、ZTP プロセスにより、このユーザー名とパスワードを使用してデバイスにユーザーが作成されます。"device-user": "aosadmin", "device-user-password": "aosadmin-password"
custom-config
- TFTPディレクトリ内のカスタム設定シェルスクリプトのファイル名、またはHTTPサーバー上のファイルを指すURL。このシェルスクリプトはZTP中に実行され、デバイスにカスタム設定を追加できます。詳細については、以下の「プラットフォーム固有の情報」セクションを参照してください。"custom-config": "sonic_custom.sh"
system-agent-params
以下に説明するように、デバイス上の新しいユーザーおよびデバイス システム エージェントの作成に使用される情報。 agent_type
- エージェントタイプ、オンボックスまたはオフボックス"agent_type": "onbox"
install_requirements
- 常に false に設定します。現在、サポート対象のネットワークオペレーティングシステムには必要ありません。"install_requirements": false
job_on_create
- デバイスにinstall
オンボックスエージェントをインストールするように設定します。"job_on_create": "install"
Junos の例
{ "junos": { "junos-versions": ["21.2R1-S2.2"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-5e-x86-64-21.2R1-S2.2-secure-signed.tgz", "device-root-password": "root123", "device-user": "admin", "device-user-password": "admin", "system-agent-params": { "platform": "junos", "agent_type": "offbox", "job_on_create": "install" } }, "QFX10002-36Q": { "junos-versions": ["21.2R1-S2.2"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-10-f-x86-64-21.2R1-S2.2-secure-signed.tgz" }, "JNP10002-60C [QFX10002-60C]": { "junos-versions": ["21.2R1-S1.3"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S1.3/junos-vmhost-install-qfx-x86-64-21.2R1-S1.3.tgz" } }
platform
- (オフボックスエージェントにのみ必要)デバイスプラットフォーム(「eos」、「nxos」、「junos」)に設定します。小文字のみ。"platform": "junos"
open_options
- (オフボックスエージェントのみ)オフボックスエージェントとデバイスAPIインターフェイス間でHTTPSを有効にする設定。open_optionsが定義されていない場合、接続はデフォルトで HTTP になります。"open_options": { "proto": "https", "port": "443" }
packages
- システムエージェントにアップロードする追加のSDKまたは拡張テレメトリパッケージを設定します。"packages": [ "aos-deployment-helper-nxos", "aosstdcollectors-builtin-nxos", "aosstdcollectors-custom-nxos" ]
- デフォルトでは、イメージ名はZTPサーバーのディレクトリからTFTP経由でZTPサーバー
で利用可能 system-agent-params
なすべてのオプション /api/system-agents
のREST APIドキュメントについては、Swaggerを参照してください。