【調査】ゆるくZTP（ゼロタッチプロビジョニング）を調べてみた

いつも記事を読んでいただきありがとうございます！
モブエンジニア（[@mob-engineer](https://qiita.com/mob_engineer))です！

個人的な学習テーマの一つである**Cisco Catalyst SD-WAN**の主要機能のひとつとして、ZTP（ゼロタッチプロビジョニング）があります。

そのうえで、個人のキャッチアップを兼ねて、ゆるくZTPを調査してみました。
初学者でもサクッと読めるように平易な表現で執筆しておりますので、お気軽に読んでいただければ幸いです。

#### 公式ドキュメント

https://www.cisco.com/c/ja_jp/td/docs/solutions/CVD/SDWAN/cisco-sdwan-design-guide.html

https://www.cisco.com/c/ja_jp/td/docs/routers/sdwan/configuration/sdwan-xe-gs-book/m-quick-connect-workflow.html

:::note info
ZTPの処理アルゴリズム、Cisco Catalyst SD-WANに関する周辺知識（Color、Site-ID、SD-WAN Validator、Manager、制御コンポーネントなど）の話は割愛いたします。
:::

:::note info
公式ドキュメントに基づいて執筆していますが、検証環境がないため、一部不正確な部分があるかもしれません。温かい目で見ていただければ幸いです。
:::

# 目次
- ネットワーク設定の課題
- ZTPとは？
    - メリット
    - 留意事項
- ZTPを利用したくない場合
- まとめ

## 従来のネットワーク設定の課題

従来のネットワーク設定の課題として次のようなものがあると考えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/3d0464d4-2f08-1e23-e71a-63c4222d36a2.png)

- 機器のConfig管理が煩雑
    - ユーザが勝手にConfig設定を変更した場合、運用管理者の手元にある設計書・Config内容が最新か判断出来ない
- 機器設定のための調整工数がかかる
    - データセンターに機器がある場合、入館申請・人員手配・手順書整備などの工数がかかってしまう
    - 速やかな機器変更を行うことが困難
- 複数拠点ある場合、人手がかかる
    - 全国に機器が存在する場合、複数人の作業員が必要となり多くの人手がかかってしまう

ざっくり言えば、**設定変更ひとつとっても手間がかかる**と思っていただければわかりやすいかと思います。

それらを解決するソリューションとして、ZTP（ゼロタッチプロビジョニング）が生まれというわけですね。

## ZTPとは？

Cisco公式から発出されている**Cisco Catalyst SD-WAN 設計ガイド**を見てみると、以下の通り説明が示されています。

#### Cisco Catalyst SD-WAN スタートアップガイド

https://www.cisco.com/c/ja_jp/td/docs/solutions/CVD/SDWAN/cisco-sdwan-design-guide.html

>vEdge デバイスの自動デバイスプロビジョニングはゼロタッチプロビジョニング（ZTP）と呼ばれ、IOS XE SD-WAN デバイスの場合はプラグアンドプレイ（PnP）と呼ばれます。プロセスは非常に似ていますが、2 つの異なるサービスが関係しています。どちらのサービスもクラウドベースのサービスとして利用でき、インターネットを介して到達できますが、オンプレミスのサービスを展開することもできます。

>自動プロビジョニング手順は、WAN エッジルータの電源が初めて投入されたときに開始されます。vEdge ルータは、ホスト名が ztp.viptela.com の ZTP サーバーへの接続を試み、SD-WAN Validator 情報を取得します。IOS XE SD-WAN ルータの場合、ホスト名 devicehelper.cisco.com を使用して PnP サーバに接続しようとします。SD-WAN Validator 情報が取得されると、その後、SD-WAN マネージャおよびコントローラに接続して、その完全な設定を取得し、オーバーレイネットワークに参加できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/44079a46-66af-2e7a-7f4b-b0873bd9bb4c.png)

ざっくり言えば、**ZTPサーバを経由したConfig流し込み機構**なのですが、ユーザドキュメントにアルゴリズムが示されていたので図示してまとめておきます。

:::note info
少しマニアックな方向けですが、cEdgeだけでなくvEdgeでもZTP処理は実行されます。
:::

#### 1：ルータからZTPサーバへアクセス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/42a36fe8-e50b-609c-a6d1-332a5f733724.png)

#### 2：ZTPサーバからSD-WAN Validatorへのアクセス情報を取得

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/740ef952-e6c7-a804-ca7c-4e771da1d77e.png)

:::note info
ざっくり言えば、**SD-WANのコントローラへアクセスする権限を取得する**と思ってもらえればわかりやすいかと思います。
:::

#### 3:SD-WAN Validatorへのアクセス情報をもとにコントローラへアクセス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/48535076-e1ea-3e27-fa4c-929b8dd1a9ae.png)

#### 4：コントローラに登録されているConfig情報をルータへ流し込む

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/3627892e-e45c-755d-8136-5814acaeb163.png)

#### 5：コントローラ ルータ間で認証処理が行われる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3846878/838f9eb9-51da-ad09-a301-0687105f30f1.png)

認証処理が完了することで、コントローラからルータを操作できるようになります。

:::note info
かなり簡略化してアルゴリズムをまとめているので、詳細を知りたい方は以下ドキュメントを読んでいただくと解像度が上がるかと思います。

https://www.cisco.com/c/en/us/td/docs/routers/sdwan/configuration/sdwan-xe-gs-book/cisco-sd-wan-overlay-network-bringup.html#Cisco_Concept.dita_f4f020f5-7db2-4bc5-8fee-f2a50fe30e0b
:::

:::note info
ZTPサーバの構築方法に関しては以下ドキュメントでまとめられております。

https://www.cisco.com/c/en/us/td/docs/routers/sdwan/configuration/sdwan-xe-gs-book/cisco-sd-wan-overlay-network-bringup.html#c_Start_the_Enterprise_ZTP_Server_7841.xml
:::

### 留意事項

ZTPを実現するための要件としていくつかあります。
もし、ZTPがうまくいかないと言った場面があった場合は以下要件を満たしているか確認してみることをおすすめします。

- WAN エッジルータは、DHCP を介して IP アドレスを取得するか、自動 IP を使用して IP アドレスを検出できる必要があります
- ネットワーク内の WAN エッジルータのゲートウェイルータは、パブリック DNS サーバーに到達可能で、vEdge デバイスの場合は ztp.viptela.com、インターネット上の IOS XE SD-WAN デバイスの場合は devicehelper.cisco.com に到達できる必要があります。または、vEdge および IOS XE SD-WAN ルータのオンボーディングを支援するために、オンプレミスの ZTP サーバーを設定できます
- SD-WAN デバイスを https://software.cisco.com の PnP ポータルに正しく入力し、SD-WAN Validator ホスト名または IP アドレス情報を定義するコントローラプロファイルに関連付ける必要があります
- SD-WAN マネージャには、WAN エッジデバイスに接続された WAN エッジルータのデバイス設定テンプレートが必要です。プロセスを機能させるには、このデバイステンプレートにシステム IP とサイト ID を含める必要があります。これがないと、ZTP または PnP プロセスは成功しません


## ZTPを利用したくない場合

#### BootStrap関連ドキュメント

https://www.cisco.com/c/en/us/td/docs/routers/sdwan/configuration/sdwan-xe-gs-book/hardware-and-software-installation.html#c_On_Site_Bootstrap_Process_for_SD_WAN_Devices_12488.xml

今までの機器設定方法（直接機器へ接続しConfigを投入する）を行う場合、Bootstrapコンフィグを設定する方法があります。

:::note info
BootStrapコンフィグ≒Startup-configみたいなものと思っていただければわかりやすいかと思います。
:::

## まとめ

ものすごくざっくりですが、ZTP（ゼロタッチプロビジョニング）を緩く調べてみました。Cisco Catalyst SD-WANを代表する機能の一つかと思いますが、個人的に正しく運用を決めておかないと痛い目を見る可能性があるかと思います。例えば、

- Config流し込んでいる最中に抜線した場合のコンフィグ不整合への対処
- ZTPサーバの維持管理、アクセス管理をどうするか
- 誤ったConfigがルータへ流し込まれた場合の対処（機器交換、リセット）
- Configが流れ込まなかった場合の切り分け（ZTPサーバ起因、サーバ起因、ネットワーク起因）

が考えられるかと思います。


### 参考サイト

https://www.cisco.com/c/en/us/td/docs/routers/sdwan/configuration/sdwan-xe-gs-book.html

https://www.cisco.com/c/ja_jp/support/routers/sd-wan/series.html

https://www.youtube.com/watch?v=_gTq9dEODxc


ゆるく調べてみましたが、認証周りを深掘りすると面白いかと思いますので、興味を持った方はぜひ調べてみていただければ良いかと思います。

最後まで記事を読んでいただきありがとうございました！

PS：
Cisco Catalyst SD-WANのラボがあるようなので触ってみた系の記事をいつか執筆します～

https://www.cisco.com/c/ja_jp/support/docs/routers/sd-wan/222057-sd-wan-lab-deployment-tool-for-cisco-mod.html