サービス プロビジョニング フレームワーク
このガイドでは、Cisco DNA Center のデバイスとファブリックのプロビジョニングに関する手順について説明します。このガイドでは、重要な API と問題のトラブルシューティング方法についても説明します。
サービス プロビジョニング フレームワーク(SPF)は、RESTful インターフェイスを介して、ネットワークサービスおよびネットワークデバイスのポリシーのプロビジョニングと設定を容易にします。SPF は、オーケストレーション エンジンを使用して内部実行フローを実装し、顧客向けのサービスからリソース向けのサービス(CFS から RFS)へのマッピングを実行します。
SPF は、Maglev クラスタ上で実行される一連のマイクロサービスです。
SPF の用語とコアサービス
SPF では、次の用語が使用されます。
-
顧客向けサービス:顧客から見たサービスの商業的な見え方。必要な技術的機能を提供する一連のリソース向けサービスをグループ化します。
VPN は、顧客向けサービスの一例です。
-
リソース向けサービス:間接的に製品の一部ですが、顧客には見えません。これは、1 つ以上の顧客向けサービスをサポートするために存在するものです。
VPN の例では、サポートする BGP が必要です。顧客は BGP を購入しておらず、BGP が稼働していることすら認識していないと思われます。つまり、BGP はリソース向けサービスの一例です。
SPF には次のコアサービスが含まれています。
-
spf-service-manager-service:プロビジョニング ワークフローを開始し管理します。
-
spf-device-manager-service:デバイスレベルの RFS 仕様とデバイスレベルのロックを生成し、設定の展開を開始します。
-
apic-em-network-programmer-service:RFS を CLI コマンドに変換し、デバイスにプッシュします。
-
task-service:プロビジョニング ワークフロー タスクを作成して維持します。
-
orchestration-engine-service:プロビジョニング ワークフローを実行します。
-
rabbitmq-service:プロビジョニング ワークフロー中にさまざまなサービス間の非同期メッセージングを処理します。
SPF アーキテクチャ図
次の図は、サービスレイヤおよびデバイス フレームワーク レイヤを含む自動化コンポーネントのマイクロサービスビューを示しています。
SPF 診断
SPF 診断 API
SPF 診断API は、SPF ノースバウンド インターフェイスの一部として使用でき、プロビジョニング要求の一部として実行されるすべてのステップを収集します。SPF 診断 API は taskid または workflowid を使用し、プロビジョニングの問題をデバッグするために必要な詳細を提供します。
https://<server-ip>/api/v2/data/spf-diagnostics/workflowinfo?taskid=d54b03b6-71bd-46ae-84b0-50412eab...
https://<server-ip>/api/v2/data/spf-diagnostics/workflowinfo?workflowid=f5a66f1e-b680-46ce-b362-860d...
タスク API
タスク API は、SPF プロビジョニング操作用に作成されたタスクを取得します。
https://<server-ip>/api/v1/task?serviceType=SPFService&progress=TASK_MODIFY_PUT&isError=true&sortB...
rabbitmq Console への移動
#First enable rabbitmq management
magctl service attach rabbitmq
rabbitmq-plugins enable rabbitmq_management
# On the root expose port. That will return to you random port
magctl service expose rabbitmq 15672
# Go rabbit console.
http://<ip>:<port that you just got though expose>/
# Credentials
To get password, on the root, run:
$ magctl service exec rabbitmq "cat /vault/rabbitmq-appuser"
Defaulting container name to rabbitmq.
Use 'kubectl describe pod/rabbitmq-0' to see all of the containers in this pod.
<password>
Username will always be: appuser
プロビジョニング要求の生成
次の図は、Cisco DNA Center の GUI からのプロビジョニング要求の作成に関連するさまざまなサービスを示しています。これらのサービスは、デバイスプロビジョニング およびファブリック プロビジョニング ワークフローで使用されます。
サービスが使用できない場合、プロビジョニング要求に影響します。
プロビジョニングのワークフロー
プロビジョニング操作には、次の主要な手順が含まれます。プロビジョニング操作でスイッチに設定をプッシュする必要がない場合、2 番目の手順はスキップされます。
-
CFS(UI/API 入力)を RFS/BCS(プッシュ設定)に変換します。
-
ターゲットデバイスに RFS を展開します。
手順 1:CFS の BCS への変換
CFS をデバイスベースの RFS に変換し、デバイスにプッシュできるようにするには、次の手順を実行します。
-
CFS プリプロセッサ:サービスプロビジョニング要求のスナップショットを作成し、CFS のロックを作成して、現在の変更が完了するまで後続のプロビジョニング操作を待機するようにします。
-
CFS 検証:サービスプロビジョニング要求を検証し、すべての前提条件が満たされていることを確認します。
たとえば、デバイスのプロビジョニング中に、検証によってデバイスがインベントリに存在し、アクティブな LAN 自動化の一部ではないことを確認します。
-
CFS プロセッサ:CFS モデルのスナップショットを作成し、対応する CFS およびシリアル化されたスナップショットのデータベーステーブルに保存します。スナップショットはグローバルロック下で取得されるため、競合状態なしで真のソースのスナップショットが 1 つだけ生成されます。ロックは、スナップショットがデータベースに保持された直後に放棄されます。
デバイスのプロビジョニング時に、Deviceinfo の ID を使用して CustomerFacingService テーブルにエントリが作成されます。
-
CFS ターゲットリゾルバ:プロビジョニングするターゲットデバイス ID を検索します。複数のデバイスを選択して VN 更新をプロビジョニングまたは実行する場合、この手順によって関連デバイスのリストが決定されます。
-
CFS トランスレータ:シリアル化されたスナップショットのデータベーステーブルに保存されている日付を読み取り、ユーザ入力を変換してデバイス固有の RFS をプロビジョニングします。この情報は spf-device manager に送信されます。
この段階で、Cisco DNA Center はインベントリ対応データベーステーブルから対応する RFS エントリを読み取ります。次に、Cisco DNA Center は CFS で行った変更で RFS オブジェクトを更新します。
手順 2:ターゲットデバイスへの設定の展開
RFS をターゲットデバイスに展開するには、次の手順を実行します。
-
RFS トランスレータ:bulkconfigspec を読み取り、デバイスレベルの RFS オブジェクトを作成してデバイスにプッシュします。
この段階で、Cisco DNA Center ではすべてのプロビジョニング関連のデータベーステーブルにデバイスレベルのデータベースロックが作成されます。
-
RFS デプロイヤ:特定の RFS の機能名(デバイスパック作成者名)の入力を含む、network programmer に送信するデバイスごとの機能ドキュメントを作成します。RFS デプロイヤは、定義されたロールバックルール(別のデバイスへの設定が失敗した場合の正常に設定されたデバイスのロールバックなど)に基づいて、複数のデバイス間でのロールバックを処理します。RFS デプロイヤは、デバイスごとの展開の結果も更新します。
プロビジョニングに関連する他のサービス
プロビジョニングには、次のサービスが含まれます。
-
network-design-service:ネットワーク設定とデバイスクレデンシャル CRUD の操作を処理します。ネットワークプロファイルを作成し、サイトへの関連付けを行います。
-
orchestration-engine-service:プロビジョニング ワークフローを実行します。
-
identity-manager-pxgrid-service:Cisco ISE が AAA サーバとして設定されている場合、このサービスはすべての Cisco ISE サーバ情報を取得します。
-
apic-em-inventory-manager-service:デバイスが Cisco DNA Center のインベントリで検出され、それらの同期ステータスが Partial Collection Failure ではないことを確認します。
CFS から RFS への変換フェーズ中に、プロビジョニングアプリはデータベーステーブルから値を読み取り、それらのモデルを更新してプロビジョニングします。
-
grouping-service:サイトの作成と変更を処理します。サイトの欠落でデバイスのプロビジョニングが失敗する場合は、grouping-service を確認します。
いずれかのサイトでネットワーク設定が欠落している、または継承が正しくない場合は、grouping-service を確認し、サイト更新通知が正しく機能していることを確認します。
-
template-programmer-service:プロビジョニング ワークフローにアタッチされているテンプレートを実行します。
重要な API
次のAPIが重要です。
-
api/v2/data/customer-facing-service/<CFSType>
たとえば、api / v2 / data / customer-faceing-service / deviceinfo はすべてのデバイス関連データを取得します。
-
api/v1/siteprofile
たとえば、api / v1 / siteprofile?namespace = authentication はすべての認証プロファイルをリストします。
-
api/v2/ippool/group?siteId=<siteId>
選択したサイトで予約されているすべての IP プールを一覧表示します。
-
api/v1/commonsetting/
たとえば、api / v1 / commonsetting / global は、すべてのグローバルネットワーク設定をリストします。
サービス名 | CFS サービスタイプ | CFS テーブル | RFS テーブル |
---|---|---|---|
Device Provisioning |
DeviceInfo |
DeviceInfo Networkwidesettingscfs |
Networkdevice AAANeSettings |
ファブリックの作成 ファブリックトランジットの作成 |
ConnectivityDomain |
connectivitydomain Virtualnetwork |
— |
ファブリックへのサイトの追加 仮想ネットワークの認証テンプレートの更新 |
ConnectivityDomain |
Connectivitydomain Virtualnetwork authenticationprofile |
Vrf Dot1xNeSettings |
ファブリックへのエッジの追加 |
ConnectivityDomain |
Connecitivtydomain Deviceinfo |
Lispcomponent Networkvlan DhcpServerSettings LispItrMapCacheEntry |
ファブリックへのボーダーの追加 |
ConnectivityDomain |
Connecitivtydomain Deviceinfo |
Lispcomponent Networkvlan DhcpServerSettings BgpProcessSettings RoutePolicyMap BgpNeighborInfo |
マルチキャストの有効化 |
ConnectivityDomain |
Connecitivtydomain Deviceinfo |
igmpNrSettings MsdpNrSettings IpV4PimNrSettings IpV4MulticastNrSettings IpV4PimNrSettings |
仮想ネットワークの IP プールの追加 |
ConnectivityDomain |
Connecitivtydomain virtualnetwork |
Segment Vrf protocolendpoint |
スタティックポートの割り当て |
ConnectivityDomain |
Connecitivtydomain Deviceinfo deviceinterfaceinfo |
protocolendpoint |
トラブルシューティング
デバイスプロビジョニングの失敗は珍しくありません。障害をトラブルシューティングするには、次の手順を実行します。
手順
ステップ 1 |
問題のあるデバイスの [Provisioning Status] で、[See details] をクリックして、最近のプロビジョニングタスクとステータスのリストを表示します。最新のプロビジョニングタスクについて [See details] をクリックします。 次のようなウィンドウが表示されます。
|
ステップ 2 |
次のプロビジョニングタスクのいずれかのステータスが FAILED の場合は、spf-service-manager ログファイルを確認します。
|
ステップ 3 |
検証フェーズでプロビジョニングが失敗した場合は、プロビジョニング要求の一部として返される JSON 要求を調べます。JSON 要求には「Service Request」の文字列とそれに続くタスク ID が含まれています。たとえば、次の文字列は、AAA サーバがプロビジョニング要求または CFS テーブルにないことを示します。
|
ステップ 4 |
ビジネスインテントからネットワークインテントへの変換フェーズでプロビジョニングが失敗した場合は、タスク ID に基づいて例外スタックトレースを確認します。次のエラーを探します。
ログメッセージの例:
|
ステップ 5 |
次のいずれかのプロビジョニングタスクのステータスが FAILED の場合は、spf-device-manager および network-programmer のログファイルを確認します。
次に例を示します。
|
集約済みのプロビジョニングステータス
各デバイスのプロビジョニングステータスは、さまざまなアプリケーション間で集約されます。
たとえば、次のプロビジョニング操作では、集約ステータスは Failed になります。
-
最新のデバイス プロビジョニング ステータス:Failed
-
前回のデバイス プロビジョニング ステータス:Success
-
最新のファブリック プロビジョニング ステータス:Success
-
最新のポリシー プロビジョニング ステータス:Success
Cisco DNA Center 1.1.x では、一部の操作(名前空間)で、各プロビジョニング操作中に同一デバイスに対して一意の ID が作成されます。これにより、デバイス プロビジョニング ステータス Failed が発生します(最初に失敗した後で成功した場合でも)。
Cisco DNA Center 1.2.x 以降でも同じ動作が見られますが、最新のプロビジョニングステータスが個別に表示されます。
次の場合、デバイス プロビジョニング ステータスは常に「Configuring」のままです。
-
プロビジョニング ステータス メッセージがサービスでハングする。
プロビジョニングは非同期動作であるため、影響を受けるサービス(spf-serv、spf-dev、orch-eng、network-programmer)間で、rabbit-mq メッセージを介して通信が行われます。サービスがメッセージを受信できない場合、メッセージは未確認状態でキュー内でハングします。
たとえば、spf-device manager が spf-service からのメッセージを受信も処理もしない場合は、rabbit-mq コンソールで内容を確認して GUI にログインする必要があります。文字列「spf」でキューをフィルタリングし、未確認メッセージがないか確認します。
-
プロビジョニング中に postgres サービスが失敗またはクラッシュする。
各デバイスに対してプロビジョニングタスクが作成されると、システムはステータスが「Configuring」のデータベースエントリを作成します。プロビジョニングが完了すると、spf-serv manager はデータベースエントリを「Failed」または「Success」に更新します。spf-serv manager がステータスを更新しようとしたときにデータベースがクラッシュすると、デバイスのプロビジョニングは「Configuring」でハングします。
Cisco DNA Center では、常に集約されたデバイス プロビジョニング ステータスが表示されるため、postgres サービスが復元され、プロビジョニング動作が成功した後でも、ステータスは「Configuring」のままです。postgres の再起動回数が最近増加したかどうかを確認する必要があります。