Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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つのフェーズで構成されています。

  1. 汎用 DHCP フェーズ
    • デバイスは、DHCP を介して IP アドレスを要求します。
    • デバイスは、割り当てられたIPアドレスと実行するスクリプトへのポインタ(またはApstraが提供するVMイメージを使用している場合はインストールするOSイメージ)を受け取ります。
  2. 初期化フェーズ
    • デバイスはTFTPを使用してZTPスクリプトをダウンロードします。
    • デバイスはダウンロードしたスクリプトを実行して、管理する準備をします。これには、デバイスがサポートされているOSを実行していることを確認することが含まれます。
  3. エージェントのインストールフェーズ
    • 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

Apstra GUIからApstra ZTPサーバー上のZTPサービスを監視できます。左側のナビゲーション メニューから、[ デバイス > ZTP ステータス > サービス] に移動します。

各サービス名には、Docker IPアドレス、サービスステータス、およびサービスステータスが最後に更新されたときが含まれます。

Apstra ZTP VMのダウンロードと導入

Apstra ZTPソフトウェアは、スタンドアロンのApstra ZTP VMで提供されます
  1. 登録サポートユーザーは、Juniper Support Downloadsから適切なApstra VMイメージをダウンロードします。
    VMware OVAの画像 apstra-ztp-4.1.*-<build-version>.ova(例: apstra-ztp-4.1.0-4.ova
    Microsoft Hyper-V apstra-ztp-4.1.*-<build-version>.vhdx.gz(例: apstra-ztp-4.1.0-115.vhdx.gz
    Linux KVM QCOW2の画像 apstra-ztp-4.1.*-<build-version>.qcow2.gz(例: apstra-ztp-4.1.0-115.qcow2.gz
  2. 提供された SHA512/MD5 チェックサムに対してダウンロードしたファイルを検証します。
  3. 適切なリソースを使用して VM を展開します。
  4. TFTP、NGINX(HTTP)、DHCPd、ステータス。および MySQL Docker コンテナが有効になり、デフォルトで実行されます。
  5. Apstra ZTP DHCPサーバーを使用しない場合は、dhcpdコンテナを停止して無効にします。

静的管理IPアドレス(Apstra ZTP)の設定

デフォルトでは、Apstra ZTPサーバーはDHCPを介して eth0インターフェイスにIPアドレスの割り当てを試みます。Apstra ZTPサーバーをDHCPサーバーとして使用する場合は、静的管理IPアドレスを設定する必要があります。

  1. ユーザー管理者としてApstraサーバーにSSHで接続します。<apstra-server-ip>(ssh admin@<apstra-server-ip>AstraサーバーのIPアドレスです)。
  2. /etc/netplan/01-netcfg.yaml静的管理 IP アドレスを設定するには、ファイルを編集します。以下の例を参照してください。(ネットプランの使用の詳細については、https://netplan.io/examples を参照してください)
  3. 変更を適用する方法は、次のいずれかです。
    • コマンドを使用してApstraサーバーを再起動します sudo reboot
    • コマンドを実行します sudo netplan apply

ZTPユーザーを設定する

API書き込みアクセス(管理者など)を持つ設定済みのApstra GUIユーザーを使用できますが、事前定義されたロール device_ztp割り当てられた指定ユーザー(「ztp」など)を作成することをお勧めします。device_ztpロールを使用すると、そのロールを持つユーザーは、コントローラーにAPI呼び出しを行い、デバイスシステムエージェントのインストールを要求できます。詳細については、「 ユーザー/ロール管理」を参照してください。

DHCP サーバーの設定

Apstraソフトウェアには、デバイス管理ネットワーク用のISC DHCPサーバーが付属しています。別のDHCPサーバーを使用する場合は、Apstraが提供するDHCPサーバーのこのガイドに記載されているのと同じオプションを設定する必要があります。

たとえば、Juniper Junos OSまたはJunos OS Evolvedデバイスを使用している場合、サーバーに以下が含まれていることを確認して、デバイスが適切な設定ファイルを読み込む必要があります。

DHCP設定ファイルは、ディレクトリ内のApstra ZTP VMにあります /containers_data/dhcp

メモ:

すべての設定ファイルは によってroot所有されます。コマンドを使用するようにrootコマンドを実行する場合、または コマンドを使用したsudo後にsudoを使用するrootsudo -s必要があります。

  1. dhcpd.conf viまたはナノテキストエディタでファイルを編集します。
  2. 管理ネットワークに対応する「グループ」を追加します。
    tftp-server-name ZTP サーバーの IP アドレス(URL ではない)
    subnet IP 管理ネットワークとネットマスク
    range 動的 DHCP IP アドレスの範囲。フルレンジが利用可能であり、その範囲の静的設定されたIPアドレスが使用されていないことを確認します。
    option routers 管理ネットワーク用のデフォルト ゲートウェイ ルーター
    host 静的 DHCP IP アドレス
    hardware ethernet DHCP ネゴシエーションに使用される管理インターフェイスの
    fixed-address ハードウェアイーサネットMACを搭載したデバイス用です。スイッチ MAC アドレスを使用する
  3. 次の DHCP パラメーターはオプションです。
  4. SONiCでZTPを使用している場合は、以下を編集する必要があります。
    sonic-provision-url:ZTP サーバーの IP アドレスを持つ TFTP URL
  5. DHCP設定を変更した後、 コマンドでApstra ZTP DHCPプロセスをsudo docker restart dhcpd再起動します。

ZTP のコントローラ IP アドレスの設定

Apstra ZTPサーバー上のファイルに /containers_data/status/app/aos.conf コントローラIPとApstra ZTPユーザー名を設定します。

ip コントローラの IP アドレス
user ZTP または管理者ユーザーのユーザー名
password ユーザーのパスワード

Apstra ZTP設定ファイルの編集

Apstra ZTP VMにはTFTPとngginx HTTPサーバーが含まれています。これらのサーバーは設定を必要としません。どちらのサーバーもディレクトリからファイルを /containers_data/tftp 提供します。(Cumulusは、Apstraバージョン4.1.0ではサポートされていません。

この ztp.json ファイルには、Apstra ZTPスクリプト ztp.pyのすべての設定が含まれています。

  1. ztp.json viまたはナノテキストエディタでファイルを編集します。
  2. このファイルは 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"
    }

    より具体的なデータが他のデータよりも優先されます。たとえば、特定のシリアル番号のデータが他のデータよりも優先され、モデル、次にプラットフォーム、最後にデフォルト データが優先されます。

  3. 次の 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"
    ]

で利用可能 system-agent-params なすべてのオプション /api/system-agentsのREST APIドキュメントについては、Swaggerを参照してください。