More Related Content
More from NTT DATA Technology & Innovation (20)
はじめての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
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。
Editor's Notes
- 15分ほど話す
- Ansibleはてくなべさんが詳しい