SlideShare une entreprise Scribd logo
1  sur  18
© 2021 NTT DATA Corporation
はじめてのTerraform × NSX-T
2021年1月20日
株式会社NTTデータ ビジネスソリューション事業本部 堤健太
VMware DevOps Meetup #7
© 2021 NTT DATA Corporation 2
今日のネタ
●想定する聞き手
これからTerraformでのNSX-TのIaCを考えている人、興味を持っている人
●話すこと
TerraformでNSX-Tを操作するときの概要、押さえておきたいこと
●話さないこと
NSX-TやTerraformのインストール方法、コードの書き方
© 2021 NTT DATA Corporation 3
目次
1. 自己紹介
2. なぜTerraform×NSX-Tをやろうとしたのか
3. Terraformとは
4. Terraform×NSX-Tの全体像(ここが伝えたい)
5. TerraformでCode化するときにどう進める
6. NSX-TでのAnsibleとTerraformの比較
7. まとめ
© 2021 NTT DATA Corporation 4
自己紹介
堤 健太 (つつみ けんた)
【経歴】
• 2008年にNTTデータに新卒入社。地方銀行の共同利用システムのネットワーク構築を10年ほど
従事し、ネットワークのソリューション開発を経て、現在はAR(拡張現実)やMEC(Mobile Edge
Computing)を使った新規ビジネス開発を主幹している。
• 2018年からNTTデータの技術者育成の施策である「技統本塾」でVMware製品を検証してい
る。この活動を通して、vExpert2020(NSX)に認定していただく。
【スキルセット、触ったことのある機器】
• Cisco製品(ルータ、スイッチ)、Infobloxを業務で触れる。キャンパスNW、WAN中心。
• ネットワークソリューション開発として、CiscoMeraki × ServiceNowやVeloCloud
• 技統本塾の活動として、VMware NSX、AWS、Azure
© 2021 NTT DATA Corporation 5
なぜTerraform×NSX-Tをやろうとしたのか~検証での課題より
• vSphere7 with k8sベースのオンプレでのアプリケーション開発基盤(仮想マシン、コンテナの混在)の検証
• アプリ開発者がコードを書くことだけに集中できるセキュアな環境を提供する。コンテナレジストリ、CI/CDなど
本番環境
検証環境
開発環境
k8s(TKG)
コンテナ
ローカル環境
顧客 エンドユーザ
開発者
【実装】
• 仮想マシンおよびコンテナの基盤としてVMwareの
vSphere7 with kubernetesを複数並べる。
• コンテナレジストリはHarbor
• GitOps、CI/CDの製品はGitlabをベース。
【発生している課題】
Nested(入れ子での仮想化)で環境構築をしているが、
NSX-Tをv2.Xからv3.0にするのにあたり設定のバックアップを
取りたい。手動で再構築も大変。
Infrastructure as CodeでCode化してバックアップ。ついでに
環境構築を自動化したい。まだCode化を取り組み始めた段
階だが、現時点で分かったことを共有する。
Ansibleに比べて社内の情報も少なかったのでTerraformを選択。
コンテナ
k8s(TKG)
コンテナ
コンテナ
k8s(TKG)
コンテナ
コンテナ
Nested ESXi Nested ESXi Nested ESXi
ESXi
Nested ESXi Nested ESXi Nested ESXi
ESXi
NSX-T
© 2021 NTT DATA Corporation 6
Terraformとは
オープンソースのInfrastructure as Code(IaC)のツールで、開発
はHashiCorpが主導している。いわゆる宣言型の方法を採用。
JSONのようなHCL(HashiCorp Configuration Language)で
記述でき、可読性が高い。
コアな処理を担当するTerraform本体と、AWSなどの各プラットフォー
ムに依存した処理を担当するproviderに分かれている。
NSX-T module is developed in GitHub:
https://github.com/hashicorp/terraform-provider-nsxt
© 2021 NTT DATA Corporation 7
Terraformとは
NSX-Tの場合、provider、data、resourceの順番で設
定情報をCodeで書いていく。
※設定ファイル(.tf)をどのように分けるかは模索中。
NSX-TだけでなくvSphereもTerraformでCode化すると、
vSphereのポートグループの変数に、NSX-T側で作成した
セグメントの変数を指定することが出来る。
※堤はGUIよりもCisco製品のconfigおよび自動化マクロを
書くのに慣れているので、特に違和感なく始められた。
© 2021 NTT DATA Corporation 8
NSX-T Automation Landscape (VMware社資料より)
NSX-T Data Center REST API
https://code.vmware.com/apis/547/nsx-t
© 2021 NTT DATA Corporation 9
目次(再掲)
1. 自己紹介
2. なぜTerraform×NSX-Tをやろうとしたのか
3. Terraformとは
4. Terraform×NSX-Tの全体像(ここが伝えたい)
5. TerraformでCode化するときにどう進める
6. NSX-TでのAnsibleとTerraformの比較
7. まとめ
© 2021 NTT DATA Corporation 10
Terraform×NSX-Tの全体像
• manager(命令型)とpolicy(宣言型)の2種類の設定方法があるが、policyに統一される方針。GUIも含む
• TerraformのProviderのうち、Resourcesは更新系、Data Sourcesは参照系(情報取得のみ)。
Provider
NSX-T Manager
REST API
manager
policy
※APIにはSystem Administrationもある。
DataSourceの一部はこれをGETしている
各種
設定
manager
Resources
Data sources
policy
Resources
Data sources
GUI
manager
policy
命令型
宣言型
ここが伝えたい
© 2021 NTT DATA Corporation 11
参考)TerraformのNSX-T Provider 公式ドキュメント
manager
policy
© 2021 NTT DATA Corporation 12
参考)NSX-TのGUI NSX-Tのv2.4あたりでポリシー型が出てきた
両者はv3.0でも併存している
© 2021 NTT DATA Corporation 13
TerraformでCode化するときにどう進める
1. NSX-Tのネットワークをデザインする。できれば構成図に起こす。
2. TerraformのCodeを作成する
→Terraformの公式ドキュメント調べる & GitHubで「nsx terraform」で出てくる設定ファイルを参考
→既存環境をあとからCode化するのは手作業。AWSの「Terraforming」などのツールは無い。
https://registry.terraform.io/providers/vmware/nsxt/latest/docs
NSX ManagerのGUIの用語と
Terraformの用語の紐付けで迷う
NSXEdge
Nested ESXi
N-VDS(Overlay)
Port
eth0
Port
nvds1
T0-router-01
T1-router-01
Port
fp-eth0 fp-eth1
Uplink
Profile③
vNIC1
18xx
_trunk
Management
1800
vNIC1
vNIC2 vNIC3
TEP
1804
vmnic1 vmnic2
(物理スイッチ)#1 (物理スイッチ)#2
C892(物理ルータ)#1
トランスポートVLAN:0
uplink-1
18-com1
Port
Port
RouterPort
downlink
vNIC1
18-com2
Port
vNIC1
18-com3
Port
Uplink
Profile②
18xx_trunk
ESXi
vmnic5
vDS_DSwitch
Uplink
Profile①
IP
プール
NIOS
Profile①
LLDP
Profile①
uplink-1
act
uplink-2
stan
IP
プール
uplink-1
トランスポートVLAN:1804
uplink-1, uplink-2
vmk10
Port
RouterPort
downlink
Port
セグメント(VLAN)
Seg-1808
Edgeクラスタ:NSX-Edge-
Cluster01
外部I/F
(アップリンク)
リンクすると自動で
アドレス採番
アップリンクは物理NWとの
接続となりNSX Edgeを指定
セグメント(Overlay)seg-1833
セグメント(Overlay)seg-1832
TZ-Vlan
TZ-Overlay vlan1808
vlan1808
接続されたゲート
ウェイ=なし
vmk0
標準SW
vmnic0
1800
構成図はVMware Communityのgo watanabeさんの
記事を参考に作成。
1800_management
※vDSのPGがAccessポートの場合は、
UplinkProfileのVLANは0にする
© 2021 NTT DATA Corporation 15
NSX-TでのAnsibleとTerraformの比較
●ざっとした違い
• 製品自体の思想としてAnsibleは命令型、Terraformは宣言型
• AnsibleとTerraformはNSX-Tの操作可能範囲が異なる。
• Ansible :デプロイ自動化にフォーカス(Day1寄り) ※NSX Managerのデプロイなど
• Terraform:NSX-Tサービスをカバー(Day2寄り) ※セグメント作成など
※ただし、VMwareさんのドキュメントに操作可能範囲は拡大するという記述が見られるので、片方のみでも操作できるようになるかも。
●AnsibleとTerraformの連携(下記の参照先より)
• Ansible Towerで全体統制して、設定部分は宣言型のTerraformで実行?
• 当たり前だが、複数のツールを覚える壁はあり、Playbook(YAML)とHCLを覚えるコストが発生。
参照:AnsibleとTerraformと
https://note.com/santak/n/n22dbb35f6c01
© 2021 NTT DATA Corporation 16
まとめ
●伝えたいこと(再掲)
NSX-Tはmanager(命令型)とpolicy(宣言型)の2種類の設定方法があるが、今後はpolicyに統一される
ので、これからNSX-TでTerraformを使うならpolicy一択。
●現時点でのTerraform×NSX-Tの感触
まだ全ての設定をTerraformでCode化することが出来ないので、なぜやりたいか、Code化する部分の構築が
どれくらい発生するかと合わせて見極めが必要そう。Ansibleでの補完も学習コストとの兼ね合い。
※NSX EdgeやTransportZone作成は、Terraform v3.1.1では不可。
●余談
今はTerraformのCodeを書くときにNSX Managerから設定の名称をコピペしている。Visual Studio
CodeなどでvCenterやNSX Managerの設定情報を取得して、NSX EdgeやTZの候補を提示してもらえる
と嬉しい。
© 2021 NTT DATA Corporation 17
参考になるTerraform×NSX-Tの日本語の情報(@sky_jokerxxさんのブログ)
https://sky-joker.tech より
© 2021 NTT DATA Corporation
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Contenu connexe

Plus de NTT DATA Technology & Innovation

Plus de NTT DATA Technology & Innovation (20)

速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Dernier

Dernier (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

はじめてのTerraform × NSX-T(VMware DevOps Meetup #7 発表資料)

  • 1. © 2021 NTT DATA Corporation はじめてのTerraform × NSX-T 2021年1月20日 株式会社NTTデータ ビジネスソリューション事業本部 堤健太 VMware DevOps Meetup #7
  • 2. © 2021 NTT DATA Corporation 2 今日のネタ ●想定する聞き手 これからTerraformでのNSX-TのIaCを考えている人、興味を持っている人 ●話すこと TerraformでNSX-Tを操作するときの概要、押さえておきたいこと ●話さないこと NSX-TやTerraformのインストール方法、コードの書き方
  • 3. © 2021 NTT DATA Corporation 3 目次 1. 自己紹介 2. なぜTerraform×NSX-Tをやろうとしたのか 3. Terraformとは 4. Terraform×NSX-Tの全体像(ここが伝えたい) 5. TerraformでCode化するときにどう進める 6. NSX-TでのAnsibleとTerraformの比較 7. まとめ
  • 4. © 2021 NTT DATA Corporation 4 自己紹介 堤 健太 (つつみ けんた) 【経歴】 • 2008年にNTTデータに新卒入社。地方銀行の共同利用システムのネットワーク構築を10年ほど 従事し、ネットワークのソリューション開発を経て、現在はAR(拡張現実)やMEC(Mobile Edge Computing)を使った新規ビジネス開発を主幹している。 • 2018年からNTTデータの技術者育成の施策である「技統本塾」でVMware製品を検証してい る。この活動を通して、vExpert2020(NSX)に認定していただく。 【スキルセット、触ったことのある機器】 • Cisco製品(ルータ、スイッチ)、Infobloxを業務で触れる。キャンパスNW、WAN中心。 • ネットワークソリューション開発として、CiscoMeraki × ServiceNowやVeloCloud • 技統本塾の活動として、VMware NSX、AWS、Azure
  • 5. © 2021 NTT DATA Corporation 5 なぜTerraform×NSX-Tをやろうとしたのか~検証での課題より • vSphere7 with k8sベースのオンプレでのアプリケーション開発基盤(仮想マシン、コンテナの混在)の検証 • アプリ開発者がコードを書くことだけに集中できるセキュアな環境を提供する。コンテナレジストリ、CI/CDなど 本番環境 検証環境 開発環境 k8s(TKG) コンテナ ローカル環境 顧客 エンドユーザ 開発者 【実装】 • 仮想マシンおよびコンテナの基盤としてVMwareの vSphere7 with kubernetesを複数並べる。 • コンテナレジストリはHarbor • GitOps、CI/CDの製品はGitlabをベース。 【発生している課題】 Nested(入れ子での仮想化)で環境構築をしているが、 NSX-Tをv2.Xからv3.0にするのにあたり設定のバックアップを 取りたい。手動で再構築も大変。 Infrastructure as CodeでCode化してバックアップ。ついでに 環境構築を自動化したい。まだCode化を取り組み始めた段 階だが、現時点で分かったことを共有する。 Ansibleに比べて社内の情報も少なかったのでTerraformを選択。 コンテナ k8s(TKG) コンテナ コンテナ k8s(TKG) コンテナ コンテナ Nested ESXi Nested ESXi Nested ESXi ESXi Nested ESXi Nested ESXi Nested ESXi ESXi NSX-T
  • 6. © 2021 NTT DATA Corporation 6 Terraformとは オープンソースのInfrastructure as Code(IaC)のツールで、開発 はHashiCorpが主導している。いわゆる宣言型の方法を採用。 JSONのようなHCL(HashiCorp Configuration Language)で 記述でき、可読性が高い。 コアな処理を担当するTerraform本体と、AWSなどの各プラットフォー ムに依存した処理を担当するproviderに分かれている。 NSX-T module is developed in GitHub: https://github.com/hashicorp/terraform-provider-nsxt
  • 7. © 2021 NTT DATA Corporation 7 Terraformとは NSX-Tの場合、provider、data、resourceの順番で設 定情報をCodeで書いていく。 ※設定ファイル(.tf)をどのように分けるかは模索中。 NSX-TだけでなくvSphereもTerraformでCode化すると、 vSphereのポートグループの変数に、NSX-T側で作成した セグメントの変数を指定することが出来る。 ※堤はGUIよりもCisco製品のconfigおよび自動化マクロを 書くのに慣れているので、特に違和感なく始められた。
  • 8. © 2021 NTT DATA Corporation 8 NSX-T Automation Landscape (VMware社資料より) NSX-T Data Center REST API https://code.vmware.com/apis/547/nsx-t
  • 9. © 2021 NTT DATA Corporation 9 目次(再掲) 1. 自己紹介 2. なぜTerraform×NSX-Tをやろうとしたのか 3. Terraformとは 4. Terraform×NSX-Tの全体像(ここが伝えたい) 5. TerraformでCode化するときにどう進める 6. NSX-TでのAnsibleとTerraformの比較 7. まとめ
  • 10. © 2021 NTT DATA Corporation 10 Terraform×NSX-Tの全体像 • manager(命令型)とpolicy(宣言型)の2種類の設定方法があるが、policyに統一される方針。GUIも含む • TerraformのProviderのうち、Resourcesは更新系、Data Sourcesは参照系(情報取得のみ)。 Provider NSX-T Manager REST API manager policy ※APIにはSystem Administrationもある。 DataSourceの一部はこれをGETしている 各種 設定 manager Resources Data sources policy Resources Data sources GUI manager policy 命令型 宣言型 ここが伝えたい
  • 11. © 2021 NTT DATA Corporation 11 参考)TerraformのNSX-T Provider 公式ドキュメント manager policy
  • 12. © 2021 NTT DATA Corporation 12 参考)NSX-TのGUI NSX-Tのv2.4あたりでポリシー型が出てきた 両者はv3.0でも併存している
  • 13. © 2021 NTT DATA Corporation 13 TerraformでCode化するときにどう進める 1. NSX-Tのネットワークをデザインする。できれば構成図に起こす。 2. TerraformのCodeを作成する →Terraformの公式ドキュメント調べる & GitHubで「nsx terraform」で出てくる設定ファイルを参考 →既存環境をあとからCode化するのは手作業。AWSの「Terraforming」などのツールは無い。 https://registry.terraform.io/providers/vmware/nsxt/latest/docs NSX ManagerのGUIの用語と Terraformの用語の紐付けで迷う
  • 14. NSXEdge Nested ESXi N-VDS(Overlay) Port eth0 Port nvds1 T0-router-01 T1-router-01 Port fp-eth0 fp-eth1 Uplink Profile③ vNIC1 18xx _trunk Management 1800 vNIC1 vNIC2 vNIC3 TEP 1804 vmnic1 vmnic2 (物理スイッチ)#1 (物理スイッチ)#2 C892(物理ルータ)#1 トランスポートVLAN:0 uplink-1 18-com1 Port Port RouterPort downlink vNIC1 18-com2 Port vNIC1 18-com3 Port Uplink Profile② 18xx_trunk ESXi vmnic5 vDS_DSwitch Uplink Profile① IP プール NIOS Profile① LLDP Profile① uplink-1 act uplink-2 stan IP プール uplink-1 トランスポートVLAN:1804 uplink-1, uplink-2 vmk10 Port RouterPort downlink Port セグメント(VLAN) Seg-1808 Edgeクラスタ:NSX-Edge- Cluster01 外部I/F (アップリンク) リンクすると自動で アドレス採番 アップリンクは物理NWとの 接続となりNSX Edgeを指定 セグメント(Overlay)seg-1833 セグメント(Overlay)seg-1832 TZ-Vlan TZ-Overlay vlan1808 vlan1808 接続されたゲート ウェイ=なし vmk0 標準SW vmnic0 1800 構成図はVMware Communityのgo watanabeさんの 記事を参考に作成。 1800_management ※vDSのPGがAccessポートの場合は、 UplinkProfileのVLANは0にする
  • 15. © 2021 NTT DATA Corporation 15 NSX-TでのAnsibleとTerraformの比較 ●ざっとした違い • 製品自体の思想としてAnsibleは命令型、Terraformは宣言型 • AnsibleとTerraformはNSX-Tの操作可能範囲が異なる。 • Ansible :デプロイ自動化にフォーカス(Day1寄り) ※NSX Managerのデプロイなど • Terraform:NSX-Tサービスをカバー(Day2寄り) ※セグメント作成など ※ただし、VMwareさんのドキュメントに操作可能範囲は拡大するという記述が見られるので、片方のみでも操作できるようになるかも。 ●AnsibleとTerraformの連携(下記の参照先より) • Ansible Towerで全体統制して、設定部分は宣言型のTerraformで実行? • 当たり前だが、複数のツールを覚える壁はあり、Playbook(YAML)とHCLを覚えるコストが発生。 参照:AnsibleとTerraformと https://note.com/santak/n/n22dbb35f6c01
  • 16. © 2021 NTT DATA Corporation 16 まとめ ●伝えたいこと(再掲) NSX-Tはmanager(命令型)とpolicy(宣言型)の2種類の設定方法があるが、今後はpolicyに統一される ので、これからNSX-TでTerraformを使うならpolicy一択。 ●現時点でのTerraform×NSX-Tの感触 まだ全ての設定をTerraformでCode化することが出来ないので、なぜやりたいか、Code化する部分の構築が どれくらい発生するかと合わせて見極めが必要そう。Ansibleでの補完も学習コストとの兼ね合い。 ※NSX EdgeやTransportZone作成は、Terraform v3.1.1では不可。 ●余談 今はTerraformのCodeを書くときにNSX Managerから設定の名称をコピペしている。Visual Studio CodeなどでvCenterやNSX Managerの設定情報を取得して、NSX EdgeやTZの候補を提示してもらえる と嬉しい。
  • 17. © 2021 NTT DATA Corporation 17 参考になるTerraform×NSX-Tの日本語の情報(@sky_jokerxxさんのブログ) https://sky-joker.tech より
  • 18. © 2021 NTT DATA Corporation 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Notes de l'éditeur

  1. 15分ほど話す
  2. Ansibleはてくなべさんが詳しい