SlideShare a Scribd company logo
株式会社ネットワールド
SI技術本部 ソリューションアーキテクト課
海野 航
第12回 ハイブリッドクラウド研究会
見終わったらすぐできる!AzureもVMwareも!!
Terraform で Infrastructure-as-Code をやってみよう
2Copyright © 2020 Networld Corporation All Rights Reserved.
もくじ
• HashiCorp 製品の考え方 と ソリューション
• Terraformによる Infrastructure-as-Code とは?
• VMware での Terraform のデモ
• Azure での Terraform のデモ
• Terraform を もっと簡単・便利に使うには
• Azure での Terraform Cloud のデモ動画
• ハイブリッドクラウドを実現する Terraform Cloud Business
Azure 用サンプルコードの
GitHub リポジトリです
3Copyright © 2020 Networld Corporation All Rights Reserved.
今日のセッションのポイント
Terraform と Infrastructure-as-Code が
いったい何なのか ゼロからワカル !!
この後すぐ、セッションを見終わったら
Terraform で Azure のプロビジョニングがデキル !!
Terraform を便利でカンタンに使う方法がワカル !!
Azure 用サンプルコードの
GitHub リポジトリです
4Copyright © 2020 Networld Corporation All Rights Reserved.
特にお伝えしたいポイント
Azure と Terraform のデモの再現は
ホントにゼロからできるようになっています !!
一般的な Windows PC と
無料試用版の Azure で再現できます。
セッションを見聞きするだけよりも、
実際に手を動かす方が理解できるはずです。
ぜひ Terraform で IaC をやってみてください !!
Azure 用サンプルコードの
GitHub リポジトリです
5Copyright © 2020 Networld Corporation All Rights Reserved.
海野 航 (うんの わたる) @UnnoWataru
ネットワールド の ソリューションアーキテクト
NVIDIA NGCA
仮想化・HCI & クラウド
× 自動化
Citrix ブログにも寄稿
https://www.citrix.com/blogs/2019/08/07/powershell-alexa-virtual-apps-and-desktops/
Copyright © 2020 Networld Corporation All Rights Reserved.
HashiCorp 製品の考え方 と ソリューション
7Copyright © 2020 Networld Corporation All Rights Reserved.
HashiCorp 製品の基礎 : Tao of HashiCorp
テクノロジーではなく、ワークフロー
(Workflows, not technologies)
技術が進歩しても、仕事のための
優れたワークフローは変わりません。
連続したプロセスによるコミュニケーション
(Communicating Sequential Processes)
各サービスはAPIを介して他のサービスと通信する
個別のプロセスとして扱われるべきです。
コードによるバージョン管理
(Versioning through Codification)
重要な知識をコード化することで情報共有が促進され、
プロセスの変更は自動的に保存され、バージョン化されるため、
データの損失を防ぐことができます。
自己修復力のあるシステム (Resilient System)
システムのあるべき状態、現在の状態に関する情報を収集
する方法、そして現在の状態を自動的に調整してあるべき
状態に戻す仕組みが必要です。
シンプル・モジュラー・コンポーザブル
(Simple, Modular, Composable)
それぞれの課題に応じたアプローチを取り、モジュールを
組み合わせて、より優れたソリューションを構築します。
イミュータブル (Immutability)
不変性のあるインフラストラクチャを使用することで、
操作、デバッグ、バージョン管理、可視化がよりシンプルになり、
より堅牢なシステムを実現できると信じています。
コードによる自動化 (Automation through Codification)
自動化された一連のワークフローにより、オペレータは
生産性を向上させ、より迅速に移動し、ヒューマンエラー
を減らすことができます。
実用主義 (Pragmatism)
これらの考え方を評価し、どのように採用するかがHashiCorpのベスト
プラクティスを向上させます。しかし、時には自分たちが間違っている
かもしれないことを受け入れる寛容さと謙虚さが必要です。
HashiCorp のビジョン、ロードマップ、
製品設計の指針となるもの。
8Copyright © 2020 Networld Corporation All Rights Reserved.
つまり、HashiCorp のソリューション とは…
Run
デベロップ
● ワークロードスケジューリング
● Multi-Cloud オーケストレーション
Secure
セキュリティ
● シークレット・マネジメント
● Encryption as a Service
Provision
プロビジョニング
● Infrastructure as a Code
● Multi-Cloud プロビジョニング
Connect
ネットワーク
● Service Registry & Discovery
● サービスメッシュ
異なる環境間の差異を吸収し、
一貫性のあるワークフローを実現
Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform による
Infrastructure as Code とは?
10Copyright © 2020 Networld Corporation All Rights Reserved.
Infrastructure as Code (Iac) とは?
インフラ
CPUやメモリ、ディスクといったリソース、
あるいは仮想マシンやアプライアンスそのもの
コードで
表現することを
Azure 用サンプルコードの
GitHub リポジトリです
11Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform で Infrastructure as Code を実現する
再利用可能な
ソースコードとして
インフラの構成を
定義する
多様なインフラを
ワークフローを
変えることなく
導入する
出典 : Terraformで超サクッとループで
リソースを用意する方法
https://dev.classmethod.jp/cloud/
aws/terraform-network-variable/
出典 : Azure 上の HashiCorp Terraform
https://azure.microsoft.com/ja-
jp/solutions/devops/terraform/
12Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform による IaC で インフラセルフサービスを実現
導
入
前
導
入
後
ソフトウェア開
発者
ソフトウェア開
発者
インフラ要件
(作業指示書)
Terraform の
コード (HCL)
インフラ SE が
作業を実施
Terraform が
プロビジョニング
開発者が
要求した
リソース
開発者が
要求した
リソース
13Copyright © 2020 Networld Corporation All Rights Reserved.
Infrastructure as Code のメリットとは
出典 : [iMagazine] Infrastructure as Codeの留意点とメリット サーバー更改プロジェクトへの適用で得られた知見・実感
https://www.imagazine.co.jp/infrastructure-as-codeの留意点とメリット%E3%80%80~サーバー更改プロ/
14Copyright © 2020 Networld Corporation All Rights Reserved.
各クラウドやプロダクト専用の IaC ツールはある
AWS なら CloudFormation など Azure なら ARM テンプレートなど
VMware なら PowerCLI など
Ansible や Puppet などは
もう少し OS の内部的な設定に
寄せているイメージ…
15Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform : ひとつの仕組みで さまざまな環境に対応
AWS Azure GCP VMware
Terraform があると…
• 異なるクラウド/オンプレミスでも単一のコードで対応可能
• 環境変更の前にレビューがしやすい
• コードに基づいた自動作業だから作業漏れが発生しない
• 現在の状態を State ファイルで確認できる
• 環境の変更履歴が追える
• 作成したコードを再利用できる
16Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform : ひとつの仕組みで さまざまな環境に対応
ACME Cloudflare GitHub Local OVH Spotinst
Akamai CloudScale.ch GitLab Logentries Packet StatusCake
Alibaba Cloud CloudStack Google Cloud Platform LogicMonitor PagerDuty TelefonicaOpenCloud
Archive Cobbler Grafana Mailgun Palo Alto Networks Template
Arukas Consul Gridscale MongoDB Atlas PostgreSQL TencentCloud
Avi Vantage Datadog Hedvig MySQL PowerDNS Terraform
Aviatrix DigitalOcean Helm Naver Cloud ProfitBricks Terraform Cloud
AWS DNS Heroku Netlify Pureport TLS
Azure DNSimple Hetzner Cloud New Relic RabbitMQ Triton
Azure Active Directory DNSMadeEasy HTTP Nomad Rancher UCloud
Azure Stack Docker HuaweiCloud NS1 Rancher2 UltraDNS
A10 Networks Dome9 HuaweiCloudStack Null Random Vault
Bitbucket Dyn Icinga2 Nutanix RightScale Venafi
Brightbox Exoscale Ignition 1&1 Rundeck VMware NSX-T
CenturyLinkCloud External InfluxDB OpenStack RunScope VMware vCloud Director
Chef F5 BIG-IP JDCloud OpenTelekomCloud Scaleway VMware vRA7
CherryServers Fastly Kubernetes OpsGenie Selectel VMware vSphere
Circonus FlexibleEngine LaunchDarkly Oracle Cloud Infrastructure SignalFx Vultr
Cisco ASA FortiOS Librato Oracle Cloud Platform Skytap Yandex
Cisco ACI Genymotion Linode Oracle Public Cloud SoftLayer
出典 : HashiCorp Terraform Providers
https://www.terraform.io/docs/providers/index.html
17Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform による IaC で インフラ セルフサービスを実現
Terraform と AWS の組み合わせ例
https://github.com/unnowataru/terraform-aws-simple-ec2
コードの作成 コードの実行
• terraform init
• terraform plan
• terraform apply
• terraform destroy
仮想マシンの作成・削除
18Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform による IaC で インフラ セルフサービスを実現
Terraform と Nutanix AHV の組み合わせ例
https://github.com/unnowataru/terraform-nutanix-sample
コードの作成 コードの実行
• terraform init
• terraform plan
• terraform apply
• terraform destroy
仮想マシンの作成・削除
19Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform を実行するためのステップ
Terraform をインストールし、定義ファイルを作成・配置する
(定義ファイルとは 拡張子 .tf のテキストデータ)
[ STEP1 ]
インストールと
コードの作成
[ STEP2 ]
terraform
init
Terraform プロバイダーを設定する
(プロバイダーとは プロビジョニング対象製品のための Terraform のプラグイン)
Terraform が定義ファイルに基づいて、各製品の API に
対応したコードを自動生成、検証(リハーサル/ドライラン)する
[ STEP3 ]
terraform
plan
実際に環境へコードを適用して、プロビジョニングする
[ STEP4 ]
terraform
apply
20Copyright © 2020 Networld Corporation All Rights Reserved.
[ STEP1 ] インストール と コードの作成
インストール コードの作成
21Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のコード : vSphere 向けサンプル
[ main.tf ]
Terraformのメインコード
[ terraform.tfvars ]
変数のみを格納しているファイル
https://github.com/unnowataru/
TFE-Sample-for-VMware
いますぐダウンロードできます!!
22Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
variable : 変数を定義するセクション
ユーザー名やvCenterのFQDN、プロビジョニングしたい仮想マシンの
名前、スペックなどを変数として定義している。
23Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
provider : インフラを定義するセクション
ここでは vsphere としているが、AWS や Azure など
プロビジョニング対象となるインフラをここで定義する。
ちなみに ”vsphere” の場合、ちょっとカッコつけようと思って
“vSphere” とか書いたりすると terraform plan 実行時に怒られる
ことがあるので注意。
これで2時間ぐらいハマりました( ;∀;)
24Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
data : 既存のリソースから情報を取り込む
変数で指定したオブジェクトから情報を取り込み、プロビジョニングに
利用できるようにする。
この例では、指定した仮想マシンテンプレートの情報を取り込み、
OSタイプや仮想ハードウェアの情報が Terraform 側で利用できる
ようになっている。
25Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
resource : 実際に作成するリソースを定義
変数で指定した情報や data で取り込んだ情報を利用して、対象となる
インフラにリソースをプロビジョニング(作成)する。
当然のことながら、HCLはプログラミング言語なので、演算子なども
きちんと使える。
ここでは変数 “count” に応じて仮想マシンの名前を1から指定した数字
まで、前ゼロ3桁でプロビジョニングするような仕組みになっている。
HCLで定義されている文字列
自分で名前を付けるオブジェクト
26Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のコード解説 : terraform.tfvars
パスワードやアクセスキーのお漏らしには注意しましょう!!
27Copyright © 2020 Networld Corporation All Rights Reserved.
[ STEP2 ] terraform init
フォルダーにコードを配置 コマンドラインで
“terraform init”
28Copyright © 2020 Networld Corporation All Rights Reserved.
[ STEP2 ] terraform init
フォルダーにプロバイダーが
ダウンロードされる
プロバイダーの実体が
配置されていることがわかる
29Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform のプロバイダーとは?
プロバイダーの役割
AWS
Azure
GCP
VMware
HCL のコード
こういう
インフラが
欲しいなぁ...
【ザックリ理解!!】
インフラの特性や固有の依存関係なども
整理して、各サービスやプロダクトの
API へ翻訳・変換してくれる
30Copyright © 2020 Networld Corporation All Rights Reserved.
[ STEP3 ] terraform plan
“terraform plan” でコードの検証を実施する
コードに不備があるとエラーが表示される
31Copyright © 2020 Networld Corporation All Rights Reserved.
[ STEP4 ] terraform apply
“terraform apply” でコードをインフラに適用する
プロビジョニングされるリソースを確認し、
問題がなければ “YES” で適用を開始する
Copyright © 2020 Networld Corporation All Rights Reserved.
VMware での Terraform のデモ動画
33Copyright © 2020 Networld Corporation All Rights Reserved.
デモのお品書き
Terraform (OSS版) をダウンロードして、
Windows 10 に初期設定する
GitHub からコードをコピペしてくる
vSphere 6.7u1 の環境で テンプレートを使って
Windows Server を 1台 プロビジョニングする
(仮想マシンの名前は TFVM001 とする)
34Copyright © 2020 Networld Corporation All Rights Reserved.
見終わったらプロビジョニングするために準備するもの
Terraform の初期設定 と
実行するコードのコピペ
https://github.com/unnowataru/TFE-Sample-for-VMware
VMware vSphere の環境
( Sysprep をしていない Windows OS テンプレート含む)
vSphere の環境に [データセンター] と
[クラスター] が作成済みであること
※この辺はコード内に変数として設定しますので terraform.tfvars を参照してください
35Copyright © 2020 Networld Corporation All Rights Reserved.
デモ : OSS版 Terraform と vSphere の組み合わせ
https://github.com/unnowataru/TFE-Sample-for-VMware
Copyright © 2020 Networld Corporation All Rights Reserved.
Azure での Terraform のデモ動画
37Copyright © 2020 Networld Corporation All Rights Reserved.
デモのお品書き
Azure CLI を使って Terraform が
Azure にプロビジョニングできる状態にする
Windows 10 での Terraform のインストールと
GitHub からのコピペによるコードの準備をする
リソースグループや仮想ネットワークなどの
Windows Server 2019 の利用に必要なリソースを設定し、
RDPで接続できる状態にプロビジョニングする
(仮想マシンの名前は TFVM0001 とする)
Azure 用サンプルコードの
GitHub リポジトリです
38Copyright © 2020 Networld Corporation All Rights Reserved.
見終わったらプロビジョニングするために準備するもの
Terraform の初期設定 と
実行するコードのコピペ
https://github.com/unnowataru/terraform-azure-sample
Azure 無料試用版サブスクリプションの取得
Cloud Shell の有効化
(ホントに簡単で、ポチポチするだけで終わります)
https://docs.microsoft.com/ja-jp/azure/cloud-shell/overview
39Copyright © 2020 Networld Corporation All Rights Reserved.
デモ : OSS版 Terraform と Azure の組み合わせ
https://github.com/unnowataru/TFE-Sample-for-VMware
Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform を もっと簡単・便利に使うには
41Copyright © 2020 Networld Corporation All Rights Reserved.
2つのタイプの 無償で使える Terraform
オンプレミス クラウド
無
償
Terraform (OSS)
• CUI のみ
• ローカルの端末で実行
• オンプレでもパブリックでもOK
Terraform Cloud (Free)
• GUI あり
• HashiCorp による SaaS
• オンプレミス利用NG
有
償
Terraform Enterprise
• GUI あり
• お客様自身によるホスティング
• オンプレでもパブリックでもOK
• チーム管理&ポリシー機能あり
• エンタープライズ向け機能あり
(SAMLや監査ログなど)
Terraform Cloud Business
• GUI あり
• HashiCorp による SaaS
• オンプレでもパブリックでもOK
• チーム管理&ポリシー機能あり
• エンタープライズ向け機能あり
(SAMLや監査ログなど)
42Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform Cloud で もっと簡単・便利に
GUI から Terraform を操作できる
43Copyright © 2020 Networld Corporation All Rights Reserved.
注目機能1 : VCS と連携したワークスペース
【ザックリ理解!!】
ひとつのワークスペースは
ひとつの VCS リポジトリに紐付く
VCS とは
Version Control System のこと
(例えば、GitHubとかGitLabとか…)
44Copyright © 2020 Networld Corporation All Rights Reserved.
注目機能1 : VCS と連携したワークスペース
ローカルにコードを
配置する代わりに…
ワークスペースに VCS の
リポジトリを紐付ける
【ザックリ理解!!】
ここからコードを取得して、
Terraform のサーバーに格納する
45Copyright © 2020 Networld Corporation All Rights Reserved.
注目機能2 : Secure Variables
【ザックリ理解!!】
GUI に入力したパスワードは
もう二度と読み取ることはできない!!
46Copyright © 2020 Networld Corporation All Rights Reserved.
注目機能3 : tfstate ファイルをチームで共有
特別な仕組みを用意することなく インフラの状態をチームで共有
【ザックリ理解!!】
• tfstate ファイルとは、リソースの
状態を示すJSONのこと
• Terraform Cloud では標準で
クラウド側に tfstate ファイルを
保持する仕組みを持っている
• これにより、チームで tfstate
ファイルを共有、参照できる
Copyright © 2020 Networld Corporation All Rights Reserved.
Azure と Terraform Cloud の組み合わせ
48Copyright © 2020 Networld Corporation All Rights Reserved.
お品書き
Terraform Cloud にログインして
GitHub と連携させたワークスペースを作成する
Terraform (OSS版) と完全に同じコードを使う
リソースグループや仮想ネットワークなどの
Windows Server 2019 の利用に必要なリソースを設定し、
RDPで接続できる状態にプロビジョニングする
(仮想マシンの名前は TFVM0001 とする)
49Copyright © 2020 Networld Corporation All Rights Reserved.
見終わったらプロビジョニングするために準備するもの
Terraform Cloud のアカウント作成と
GitHub リポジトリの Fork (コピー)
https://github.com/unnowataru/terraform-azure-sample
Azure 無料試用版サブスクリプションの取得
Cloud Shell の有効化 と
サービスプリンシパルの作成
(OSS 版のデモ環境の設定を流用するので、ここでは割愛します)
50Copyright © 2020 Networld Corporation All Rights Reserved.
(1) Terraform Cloud のアカウントを作成し、サインイン
51Copyright © 2020 Networld Corporation All Rights Reserved.
(2) 新規ワークスペースを作成し、VCS を指定
52Copyright © 2020 Networld Corporation All Rights Reserved.
(3) Azure 用コードが配置されたリポジトリを指定
53Copyright © 2020 Networld Corporation All Rights Reserved.
(4) 変数を入力、必要であれば秘匿化し、plan を実行
54Copyright © 2020 Networld Corporation All Rights Reserved.
(5) plan の結果を確認し、問題がなければ apply を実行
55Copyright © 2020 Networld Corporation All Rights Reserved.
(6) apply が完了
56Copyright © 2020 Networld Corporation All Rights Reserved.
(7) Azure にプロビジョニングされていることを確認
Copyright © 2020 Networld Corporation All Rights Reserved.
ハイブリッドクラウドを実現する
Terraform Cloud Business
58Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform Cloud Business とは
ハイブリッドクラウドで
簡単・安全・便利 に使うなら Terraform Cloud Business
こんなひとにオススメ!!
• GUI がほしい
• サポートがほしい
• チームで取り組みたい
(属人性をできる限りなくしたい)
• 管理・監査が必要
(ヒヤリハットを防ぎたい)
• オンプレミスでも使いたい
59Copyright © 2020 Networld Corporation All Rights Reserved.
いままでの Terraform Cloud で実現できなかったこと
なぜ 従来のTerraform Cloud ではダメだったのか?
• オンプレミスの環境に接続できない
Terraform
Cloud
AWS
Azure
GCP
【ザックリ理解】
• Terraform Cloud は HashiCorp による SaaS
• パブリッククラウドのエンドポイントは
パブリックIP (当たり前)
• 通常では vCenter や SCVMM は
パブリックに公開しない (当たり前)
60Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform Cloud Business で実現できること
Terraform Cloud でもオンプレミスがイケる
• エージェント経由でオンプレミスに接続できる
Terraform
Cloud
AWS
Azure
GCP
【ザックリ理解!!】
Terraform Cloud Agent が
https で Terraform Cloud へ疎通し、
代理でプロビジョニングする
61Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform Cloud Business でのオンプレ対応ができると
Terraform Cloud の利便性そのままに
オンプレミスでのプロビジョニングができる
SAML や 監査ログなどのエンタープライズ向けの
機能を利用したい場合でも 資産を持たない選択ができる
パブリッククラウドとオンプレミスを
ひとつのツール (Terraform Cloud) ですべて管理できる
= シームレスなハイブリッドクラウドを実現 !!
62Copyright © 2020 Networld Corporation All Rights Reserved.
(1) Terraform Cloud Agent のトークンのセットアップ
63Copyright © 2020 Networld Corporation All Rights Reserved.
(2) ダウンロードし、unzip したバイナリを実行
64Copyright © 2020 Networld Corporation All Rights Reserved.
(3) Terraform Cloud に エージェントが認識される
65Copyright © 2020 Networld Corporation All Rights Reserved.
(4) ワークスペース設定で [ エージェント実行 ] を指定
66Copyright © 2020 Networld Corporation All Rights Reserved.
(5) 変数を入力、必要であれば秘匿化し、plan を実行
67Copyright © 2020 Networld Corporation All Rights Reserved.
(6) エージェント側に plan がリクエストされる
68Copyright © 2020 Networld Corporation All Rights Reserved.
(7) plan の結果を確認し、問題がなければ apply を実行
69Copyright © 2020 Networld Corporation All Rights Reserved.
(8) vSphere にプロビジョニングされていることを確認
70Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform Cloud Business 注目機能 : Sentinel
Terraform のポリシー管理機能 Sentinel
こんなひとにオススメ!!
• GUI がほしい
• サポートがほしい
• チームで取り組みたい
(属人性をできる限りなくしたい)
• 管理・監査が必要
(ヒヤリハットを防ぎたい)
• オンプレミスでも使いたい
【ザックリ理解!!】
特にこの部分に有効で、
いろいろできちゃう Terraform で
事故が起きないようポリシー設定できる
71Copyright © 2020 Networld Corporation All Rights Reserved.
Terraform Cloud Business 注目機能 : Sentinel
Policy as Code : ポリシーをコード化し、プロビジョニングする
ときに自動的にルールが適用されているか確認。
Version Control : ポリシー作成やバージョン管理、コードの
レビューなどを既存の VCS ベースの手法で実現。
Policy Sets : 複数のポリシーをグループ化し、複数の異なる
環境に対し、独自のルールの設定が可能。
Testing : Sentinel Simulator により、カンタンに
ポリシーのテストや開発が可能。
72Copyright © 2020 Networld Corporation All Rights Reserved.
Sentinel にはどんなポリシーがあるのか?
VMware 向けのサンプルだと… Azure 向けのサンプルだと…
https://www.terraform.io/docs/cloud/sentinel/examples.html
73Copyright © 2020 Networld Corporation All Rights Reserved.
Sentinel はどうやって設定するのか?
VCS にコードを作成して…
https://github.com/hashicorp/terraform-guides/blob/master/governance/second-generation/vmware/restrict-vm-disk-size.sentinel
リポジトリからポリシーを設定
Copyright © 2020 Networld Corporation All Rights Reserved.
まとめ
75Copyright © 2020 Networld Corporation All Rights Reserved.
まとめ : Infrastructure as Code (Iac) とは
インフラ
CPUやメモリ、ディスクといったリソース、
あるいは仮想マシンやアプライアンスそのもの
コードで
表現することを
76Copyright © 2020 Networld Corporation All Rights Reserved.
まとめ : Terraform / Terraform Cloud の実行ステップ
Terraform をインストールし、定義ファイルを作成・配置する
(定義ファイルとは 拡張子 .tf のテキストデータ)
[ STEP1 ]
インストールと
コードの作成
[ STEP2 ]
terraform
init
Terraform プロバイダーを設定する
(プロバイダーとは プロビジョニング対象製品のための Terraform のプラグイン)
Terraform が定義ファイルに基づいて、各製品の API に
対応したコードを自動生成、検証(リハーサル/ドライラン)する
[ STEP3 ]
terraform
plan
実際に環境へコードを適用して、プロビジョニングする
[ STEP4 ]
terraform
apply
77Copyright © 2020 Networld Corporation All Rights Reserved.
まとめ : Terraform Cloud Business とは
ハイブリッドクラウドで
安心・安全 に使うなら Terraform Cloud Business
こんなひとにオススメ!!
• GUI がほしい
• サポートがほしい
• チームで取り組みたい
(属人性をできる限りなくしたい)
• 管理・監査が必要
(ヒヤリハットを防ぎたい)
• オンプレミスでも使いたい
78Copyright © 2020 Networld Corporation All Rights Reserved.
まとめ : 実践してみよう !!
Azure と Terraform (OSS版) のデモの再現は
ホントにゼロからできるようになっています !!
一般的な Windows PC と
無料試用版の Azure で再現できます。
セッションを見聞きするだけよりも、
実際に手を動かす方が理解できるはずです。
ぜひ Terraform で IaC をやってみてください !!
Azure 用サンプルコードの
GitHub リポジトリです
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere

More Related Content

PPTX
Terraformで始めるInfrastructure as Code
PDF
ゼロからはじめるTerraformでのDevOps2021
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
Nutanix Meetup 22.01 Wataru Unno
PPTX
Redshift Spectrumを使ってみた話
PDF
Struggle against cross-domain data complexity in Recruit group
PDF
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
PDF
リクルートの利用事例から考える AWSの各サービスとセキュリティ
Terraformで始めるInfrastructure as Code
ゼロからはじめるTerraformでのDevOps2021
コンテナ未経験新人が学ぶコンテナ技術入門
Nutanix Meetup 22.01 Wataru Unno
Redshift Spectrumを使ってみた話
Struggle against cross-domain data complexity in Recruit group
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
リクルートの利用事例から考える AWSの各サービスとセキュリティ

What's hot (20)

PPTX
DLモデル開発中の雑務が嫌で支援プラットフォームを作った話
PDF
Ceph Loves OpenStack: Why and How
PDF
Apache Hadoopの新機能Ozoneの現状
PPTX
クラウド概要 by Engine Yard
PDF
コンテナは次世代サービスの主流になるか?
PDF
Nutanix エンジニアのための Git 入門 :序
PDF
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
PPTX
Prometheus入門から運用まで徹底解説
PDF
Lenovo seminar rancher_200513
PDF
20141121 zabbix conference_japan_2014_nifty_kusakabe
PDF
Rancherを活用して開発効率を上げる
PDF
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
PDF
そろそろLambda(CI/CD編)
PPTX
Docker活用ソリューション紹介
PDF
JJUG CCC リクルートの Java に対する取り組み
PDF
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
PDF
Jbs seminar rancher_200325
PPTX
Mesos consulで構築するマイクロサービスインフラ
PDF
PPTX
オタク×Node.js勉強会
DLモデル開発中の雑務が嫌で支援プラットフォームを作った話
Ceph Loves OpenStack: Why and How
Apache Hadoopの新機能Ozoneの現状
クラウド概要 by Engine Yard
コンテナは次世代サービスの主流になるか?
Nutanix エンジニアのための Git 入門 :序
CoreOS OEM on NIFTY Cloud - CoreOS Meetup Tokyo #1 #coreosjp
Prometheus入門から運用まで徹底解説
Lenovo seminar rancher_200513
20141121 zabbix conference_japan_2014_nifty_kusakabe
Rancherを活用して開発効率を上げる
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
そろそろLambda(CI/CD編)
Docker活用ソリューション紹介
JJUG CCC リクルートの Java に対する取り組み
TectonicはKubernetesの構築・管理基盤である -概要の章-/-構築の章-
Jbs seminar rancher_200325
Mesos consulで構築するマイクロサービスインフラ
オタク×Node.js勉強会
Ad

Similar to QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere (20)

PDF
Provisioning Nutanix VMs with Terraform
PDF
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
PPTX
Step by stepで学ぶTerraformによる監視付きAWS構築
PDF
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
PDF
Terraformをいじってみて
PDF
TerraformによるIaCの導入
PDF
Terraform始めました
PDF
terraform基礎
PDF
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
PDF
PDF
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
PDF
AWS CloudFormationによるInfrastructure as Codeの実現
PDF
HashiCorp Terraform Enterprise 紹介
PDF
Terraform Bootcamp - Azure Infrastructure as Code隊
PDF
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
PPTX
Azure Pipline × Terraform
PDF
クラウドを最大限活用するinfrastructure as codeを考えよう
PDF
Gmo media terraform slide
PPTX
こうあって欲しいIaC
PDF
Infra as Code in Azure
Provisioning Nutanix VMs with Terraform
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
Step by stepで学ぶTerraformによる監視付きAWS構築
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
Terraformをいじってみて
TerraformによるIaCの導入
Terraform始めました
terraform基礎
元運用担当者が,現役時代に本当に欲しかったもの. Osc2014 kansai@kyoto terraform introduction
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
AWS CloudFormationによるInfrastructure as Codeの実現
HashiCorp Terraform Enterprise 紹介
Terraform Bootcamp - Azure Infrastructure as Code隊
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
Azure Pipline × Terraform
クラウドを最大限活用するinfrastructure as codeを考えよう
Gmo media terraform slide
こうあって欲しいIaC
Infra as Code in Azure
Ad

QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere

  • 1. 株式会社ネットワールド SI技術本部 ソリューションアーキテクト課 海野 航 第12回 ハイブリッドクラウド研究会 見終わったらすぐできる!AzureもVMwareも!! Terraform で Infrastructure-as-Code をやってみよう
  • 2. 2Copyright © 2020 Networld Corporation All Rights Reserved. もくじ • HashiCorp 製品の考え方 と ソリューション • Terraformによる Infrastructure-as-Code とは? • VMware での Terraform のデモ • Azure での Terraform のデモ • Terraform を もっと簡単・便利に使うには • Azure での Terraform Cloud のデモ動画 • ハイブリッドクラウドを実現する Terraform Cloud Business Azure 用サンプルコードの GitHub リポジトリです
  • 3. 3Copyright © 2020 Networld Corporation All Rights Reserved. 今日のセッションのポイント Terraform と Infrastructure-as-Code が いったい何なのか ゼロからワカル !! この後すぐ、セッションを見終わったら Terraform で Azure のプロビジョニングがデキル !! Terraform を便利でカンタンに使う方法がワカル !! Azure 用サンプルコードの GitHub リポジトリです
  • 4. 4Copyright © 2020 Networld Corporation All Rights Reserved. 特にお伝えしたいポイント Azure と Terraform のデモの再現は ホントにゼロからできるようになっています !! 一般的な Windows PC と 無料試用版の Azure で再現できます。 セッションを見聞きするだけよりも、 実際に手を動かす方が理解できるはずです。 ぜひ Terraform で IaC をやってみてください !! Azure 用サンプルコードの GitHub リポジトリです
  • 5. 5Copyright © 2020 Networld Corporation All Rights Reserved. 海野 航 (うんの わたる) @UnnoWataru ネットワールド の ソリューションアーキテクト NVIDIA NGCA 仮想化・HCI & クラウド × 自動化 Citrix ブログにも寄稿 https://www.citrix.com/blogs/2019/08/07/powershell-alexa-virtual-apps-and-desktops/
  • 6. Copyright © 2020 Networld Corporation All Rights Reserved. HashiCorp 製品の考え方 と ソリューション
  • 7. 7Copyright © 2020 Networld Corporation All Rights Reserved. HashiCorp 製品の基礎 : Tao of HashiCorp テクノロジーではなく、ワークフロー (Workflows, not technologies) 技術が進歩しても、仕事のための 優れたワークフローは変わりません。 連続したプロセスによるコミュニケーション (Communicating Sequential Processes) 各サービスはAPIを介して他のサービスと通信する 個別のプロセスとして扱われるべきです。 コードによるバージョン管理 (Versioning through Codification) 重要な知識をコード化することで情報共有が促進され、 プロセスの変更は自動的に保存され、バージョン化されるため、 データの損失を防ぐことができます。 自己修復力のあるシステム (Resilient System) システムのあるべき状態、現在の状態に関する情報を収集 する方法、そして現在の状態を自動的に調整してあるべき 状態に戻す仕組みが必要です。 シンプル・モジュラー・コンポーザブル (Simple, Modular, Composable) それぞれの課題に応じたアプローチを取り、モジュールを 組み合わせて、より優れたソリューションを構築します。 イミュータブル (Immutability) 不変性のあるインフラストラクチャを使用することで、 操作、デバッグ、バージョン管理、可視化がよりシンプルになり、 より堅牢なシステムを実現できると信じています。 コードによる自動化 (Automation through Codification) 自動化された一連のワークフローにより、オペレータは 生産性を向上させ、より迅速に移動し、ヒューマンエラー を減らすことができます。 実用主義 (Pragmatism) これらの考え方を評価し、どのように採用するかがHashiCorpのベスト プラクティスを向上させます。しかし、時には自分たちが間違っている かもしれないことを受け入れる寛容さと謙虚さが必要です。 HashiCorp のビジョン、ロードマップ、 製品設計の指針となるもの。
  • 8. 8Copyright © 2020 Networld Corporation All Rights Reserved. つまり、HashiCorp のソリューション とは… Run デベロップ ● ワークロードスケジューリング ● Multi-Cloud オーケストレーション Secure セキュリティ ● シークレット・マネジメント ● Encryption as a Service Provision プロビジョニング ● Infrastructure as a Code ● Multi-Cloud プロビジョニング Connect ネットワーク ● Service Registry & Discovery ● サービスメッシュ 異なる環境間の差異を吸収し、 一貫性のあるワークフローを実現
  • 9. Copyright © 2020 Networld Corporation All Rights Reserved. Terraform による Infrastructure as Code とは?
  • 10. 10Copyright © 2020 Networld Corporation All Rights Reserved. Infrastructure as Code (Iac) とは? インフラ CPUやメモリ、ディスクといったリソース、 あるいは仮想マシンやアプライアンスそのもの コードで 表現することを Azure 用サンプルコードの GitHub リポジトリです
  • 11. 11Copyright © 2020 Networld Corporation All Rights Reserved. Terraform で Infrastructure as Code を実現する 再利用可能な ソースコードとして インフラの構成を 定義する 多様なインフラを ワークフローを 変えることなく 導入する 出典 : Terraformで超サクッとループで リソースを用意する方法 https://dev.classmethod.jp/cloud/ aws/terraform-network-variable/ 出典 : Azure 上の HashiCorp Terraform https://azure.microsoft.com/ja- jp/solutions/devops/terraform/
  • 12. 12Copyright © 2020 Networld Corporation All Rights Reserved. Terraform による IaC で インフラセルフサービスを実現 導 入 前 導 入 後 ソフトウェア開 発者 ソフトウェア開 発者 インフラ要件 (作業指示書) Terraform の コード (HCL) インフラ SE が 作業を実施 Terraform が プロビジョニング 開発者が 要求した リソース 開発者が 要求した リソース
  • 13. 13Copyright © 2020 Networld Corporation All Rights Reserved. Infrastructure as Code のメリットとは 出典 : [iMagazine] Infrastructure as Codeの留意点とメリット サーバー更改プロジェクトへの適用で得られた知見・実感 https://www.imagazine.co.jp/infrastructure-as-codeの留意点とメリット%E3%80%80~サーバー更改プロ/
  • 14. 14Copyright © 2020 Networld Corporation All Rights Reserved. 各クラウドやプロダクト専用の IaC ツールはある AWS なら CloudFormation など Azure なら ARM テンプレートなど VMware なら PowerCLI など Ansible や Puppet などは もう少し OS の内部的な設定に 寄せているイメージ…
  • 15. 15Copyright © 2020 Networld Corporation All Rights Reserved. Terraform : ひとつの仕組みで さまざまな環境に対応 AWS Azure GCP VMware Terraform があると… • 異なるクラウド/オンプレミスでも単一のコードで対応可能 • 環境変更の前にレビューがしやすい • コードに基づいた自動作業だから作業漏れが発生しない • 現在の状態を State ファイルで確認できる • 環境の変更履歴が追える • 作成したコードを再利用できる
  • 16. 16Copyright © 2020 Networld Corporation All Rights Reserved. Terraform : ひとつの仕組みで さまざまな環境に対応 ACME Cloudflare GitHub Local OVH Spotinst Akamai CloudScale.ch GitLab Logentries Packet StatusCake Alibaba Cloud CloudStack Google Cloud Platform LogicMonitor PagerDuty TelefonicaOpenCloud Archive Cobbler Grafana Mailgun Palo Alto Networks Template Arukas Consul Gridscale MongoDB Atlas PostgreSQL TencentCloud Avi Vantage Datadog Hedvig MySQL PowerDNS Terraform Aviatrix DigitalOcean Helm Naver Cloud ProfitBricks Terraform Cloud AWS DNS Heroku Netlify Pureport TLS Azure DNSimple Hetzner Cloud New Relic RabbitMQ Triton Azure Active Directory DNSMadeEasy HTTP Nomad Rancher UCloud Azure Stack Docker HuaweiCloud NS1 Rancher2 UltraDNS A10 Networks Dome9 HuaweiCloudStack Null Random Vault Bitbucket Dyn Icinga2 Nutanix RightScale Venafi Brightbox Exoscale Ignition 1&1 Rundeck VMware NSX-T CenturyLinkCloud External InfluxDB OpenStack RunScope VMware vCloud Director Chef F5 BIG-IP JDCloud OpenTelekomCloud Scaleway VMware vRA7 CherryServers Fastly Kubernetes OpsGenie Selectel VMware vSphere Circonus FlexibleEngine LaunchDarkly Oracle Cloud Infrastructure SignalFx Vultr Cisco ASA FortiOS Librato Oracle Cloud Platform Skytap Yandex Cisco ACI Genymotion Linode Oracle Public Cloud SoftLayer 出典 : HashiCorp Terraform Providers https://www.terraform.io/docs/providers/index.html
  • 17. 17Copyright © 2020 Networld Corporation All Rights Reserved. Terraform による IaC で インフラ セルフサービスを実現 Terraform と AWS の組み合わせ例 https://github.com/unnowataru/terraform-aws-simple-ec2 コードの作成 コードの実行 • terraform init • terraform plan • terraform apply • terraform destroy 仮想マシンの作成・削除
  • 18. 18Copyright © 2020 Networld Corporation All Rights Reserved. Terraform による IaC で インフラ セルフサービスを実現 Terraform と Nutanix AHV の組み合わせ例 https://github.com/unnowataru/terraform-nutanix-sample コードの作成 コードの実行 • terraform init • terraform plan • terraform apply • terraform destroy 仮想マシンの作成・削除
  • 19. 19Copyright © 2020 Networld Corporation All Rights Reserved. Terraform を実行するためのステップ Terraform をインストールし、定義ファイルを作成・配置する (定義ファイルとは 拡張子 .tf のテキストデータ) [ STEP1 ] インストールと コードの作成 [ STEP2 ] terraform init Terraform プロバイダーを設定する (プロバイダーとは プロビジョニング対象製品のための Terraform のプラグイン) Terraform が定義ファイルに基づいて、各製品の API に 対応したコードを自動生成、検証(リハーサル/ドライラン)する [ STEP3 ] terraform plan 実際に環境へコードを適用して、プロビジョニングする [ STEP4 ] terraform apply
  • 20. 20Copyright © 2020 Networld Corporation All Rights Reserved. [ STEP1 ] インストール と コードの作成 インストール コードの作成
  • 21. 21Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のコード : vSphere 向けサンプル [ main.tf ] Terraformのメインコード [ terraform.tfvars ] 変数のみを格納しているファイル https://github.com/unnowataru/ TFE-Sample-for-VMware いますぐダウンロードできます!!
  • 22. 22Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf variable : 変数を定義するセクション ユーザー名やvCenterのFQDN、プロビジョニングしたい仮想マシンの 名前、スペックなどを変数として定義している。
  • 23. 23Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf provider : インフラを定義するセクション ここでは vsphere としているが、AWS や Azure など プロビジョニング対象となるインフラをここで定義する。 ちなみに ”vsphere” の場合、ちょっとカッコつけようと思って “vSphere” とか書いたりすると terraform plan 実行時に怒られる ことがあるので注意。 これで2時間ぐらいハマりました( ;∀;)
  • 24. 24Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf data : 既存のリソースから情報を取り込む 変数で指定したオブジェクトから情報を取り込み、プロビジョニングに 利用できるようにする。 この例では、指定した仮想マシンテンプレートの情報を取り込み、 OSタイプや仮想ハードウェアの情報が Terraform 側で利用できる ようになっている。
  • 25. 25Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf resource : 実際に作成するリソースを定義 変数で指定した情報や data で取り込んだ情報を利用して、対象となる インフラにリソースをプロビジョニング(作成)する。 当然のことながら、HCLはプログラミング言語なので、演算子なども きちんと使える。 ここでは変数 “count” に応じて仮想マシンの名前を1から指定した数字 まで、前ゼロ3桁でプロビジョニングするような仕組みになっている。 HCLで定義されている文字列 自分で名前を付けるオブジェクト
  • 26. 26Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のコード解説 : terraform.tfvars パスワードやアクセスキーのお漏らしには注意しましょう!!
  • 27. 27Copyright © 2020 Networld Corporation All Rights Reserved. [ STEP2 ] terraform init フォルダーにコードを配置 コマンドラインで “terraform init”
  • 28. 28Copyright © 2020 Networld Corporation All Rights Reserved. [ STEP2 ] terraform init フォルダーにプロバイダーが ダウンロードされる プロバイダーの実体が 配置されていることがわかる
  • 29. 29Copyright © 2020 Networld Corporation All Rights Reserved. Terraform のプロバイダーとは? プロバイダーの役割 AWS Azure GCP VMware HCL のコード こういう インフラが 欲しいなぁ... 【ザックリ理解!!】 インフラの特性や固有の依存関係なども 整理して、各サービスやプロダクトの API へ翻訳・変換してくれる
  • 30. 30Copyright © 2020 Networld Corporation All Rights Reserved. [ STEP3 ] terraform plan “terraform plan” でコードの検証を実施する コードに不備があるとエラーが表示される
  • 31. 31Copyright © 2020 Networld Corporation All Rights Reserved. [ STEP4 ] terraform apply “terraform apply” でコードをインフラに適用する プロビジョニングされるリソースを確認し、 問題がなければ “YES” で適用を開始する
  • 32. Copyright © 2020 Networld Corporation All Rights Reserved. VMware での Terraform のデモ動画
  • 33. 33Copyright © 2020 Networld Corporation All Rights Reserved. デモのお品書き Terraform (OSS版) をダウンロードして、 Windows 10 に初期設定する GitHub からコードをコピペしてくる vSphere 6.7u1 の環境で テンプレートを使って Windows Server を 1台 プロビジョニングする (仮想マシンの名前は TFVM001 とする)
  • 34. 34Copyright © 2020 Networld Corporation All Rights Reserved. 見終わったらプロビジョニングするために準備するもの Terraform の初期設定 と 実行するコードのコピペ https://github.com/unnowataru/TFE-Sample-for-VMware VMware vSphere の環境 ( Sysprep をしていない Windows OS テンプレート含む) vSphere の環境に [データセンター] と [クラスター] が作成済みであること ※この辺はコード内に変数として設定しますので terraform.tfvars を参照してください
  • 35. 35Copyright © 2020 Networld Corporation All Rights Reserved. デモ : OSS版 Terraform と vSphere の組み合わせ https://github.com/unnowataru/TFE-Sample-for-VMware
  • 36. Copyright © 2020 Networld Corporation All Rights Reserved. Azure での Terraform のデモ動画
  • 37. 37Copyright © 2020 Networld Corporation All Rights Reserved. デモのお品書き Azure CLI を使って Terraform が Azure にプロビジョニングできる状態にする Windows 10 での Terraform のインストールと GitHub からのコピペによるコードの準備をする リソースグループや仮想ネットワークなどの Windows Server 2019 の利用に必要なリソースを設定し、 RDPで接続できる状態にプロビジョニングする (仮想マシンの名前は TFVM0001 とする) Azure 用サンプルコードの GitHub リポジトリです
  • 38. 38Copyright © 2020 Networld Corporation All Rights Reserved. 見終わったらプロビジョニングするために準備するもの Terraform の初期設定 と 実行するコードのコピペ https://github.com/unnowataru/terraform-azure-sample Azure 無料試用版サブスクリプションの取得 Cloud Shell の有効化 (ホントに簡単で、ポチポチするだけで終わります) https://docs.microsoft.com/ja-jp/azure/cloud-shell/overview
  • 39. 39Copyright © 2020 Networld Corporation All Rights Reserved. デモ : OSS版 Terraform と Azure の組み合わせ https://github.com/unnowataru/TFE-Sample-for-VMware
  • 40. Copyright © 2020 Networld Corporation All Rights Reserved. Terraform を もっと簡単・便利に使うには
  • 41. 41Copyright © 2020 Networld Corporation All Rights Reserved. 2つのタイプの 無償で使える Terraform オンプレミス クラウド 無 償 Terraform (OSS) • CUI のみ • ローカルの端末で実行 • オンプレでもパブリックでもOK Terraform Cloud (Free) • GUI あり • HashiCorp による SaaS • オンプレミス利用NG 有 償 Terraform Enterprise • GUI あり • お客様自身によるホスティング • オンプレでもパブリックでもOK • チーム管理&ポリシー機能あり • エンタープライズ向け機能あり (SAMLや監査ログなど) Terraform Cloud Business • GUI あり • HashiCorp による SaaS • オンプレでもパブリックでもOK • チーム管理&ポリシー機能あり • エンタープライズ向け機能あり (SAMLや監査ログなど)
  • 42. 42Copyright © 2020 Networld Corporation All Rights Reserved. Terraform Cloud で もっと簡単・便利に GUI から Terraform を操作できる
  • 43. 43Copyright © 2020 Networld Corporation All Rights Reserved. 注目機能1 : VCS と連携したワークスペース 【ザックリ理解!!】 ひとつのワークスペースは ひとつの VCS リポジトリに紐付く VCS とは Version Control System のこと (例えば、GitHubとかGitLabとか…)
  • 44. 44Copyright © 2020 Networld Corporation All Rights Reserved. 注目機能1 : VCS と連携したワークスペース ローカルにコードを 配置する代わりに… ワークスペースに VCS の リポジトリを紐付ける 【ザックリ理解!!】 ここからコードを取得して、 Terraform のサーバーに格納する
  • 45. 45Copyright © 2020 Networld Corporation All Rights Reserved. 注目機能2 : Secure Variables 【ザックリ理解!!】 GUI に入力したパスワードは もう二度と読み取ることはできない!!
  • 46. 46Copyright © 2020 Networld Corporation All Rights Reserved. 注目機能3 : tfstate ファイルをチームで共有 特別な仕組みを用意することなく インフラの状態をチームで共有 【ザックリ理解!!】 • tfstate ファイルとは、リソースの 状態を示すJSONのこと • Terraform Cloud では標準で クラウド側に tfstate ファイルを 保持する仕組みを持っている • これにより、チームで tfstate ファイルを共有、参照できる
  • 47. Copyright © 2020 Networld Corporation All Rights Reserved. Azure と Terraform Cloud の組み合わせ
  • 48. 48Copyright © 2020 Networld Corporation All Rights Reserved. お品書き Terraform Cloud にログインして GitHub と連携させたワークスペースを作成する Terraform (OSS版) と完全に同じコードを使う リソースグループや仮想ネットワークなどの Windows Server 2019 の利用に必要なリソースを設定し、 RDPで接続できる状態にプロビジョニングする (仮想マシンの名前は TFVM0001 とする)
  • 49. 49Copyright © 2020 Networld Corporation All Rights Reserved. 見終わったらプロビジョニングするために準備するもの Terraform Cloud のアカウント作成と GitHub リポジトリの Fork (コピー) https://github.com/unnowataru/terraform-azure-sample Azure 無料試用版サブスクリプションの取得 Cloud Shell の有効化 と サービスプリンシパルの作成 (OSS 版のデモ環境の設定を流用するので、ここでは割愛します)
  • 50. 50Copyright © 2020 Networld Corporation All Rights Reserved. (1) Terraform Cloud のアカウントを作成し、サインイン
  • 51. 51Copyright © 2020 Networld Corporation All Rights Reserved. (2) 新規ワークスペースを作成し、VCS を指定
  • 52. 52Copyright © 2020 Networld Corporation All Rights Reserved. (3) Azure 用コードが配置されたリポジトリを指定
  • 53. 53Copyright © 2020 Networld Corporation All Rights Reserved. (4) 変数を入力、必要であれば秘匿化し、plan を実行
  • 54. 54Copyright © 2020 Networld Corporation All Rights Reserved. (5) plan の結果を確認し、問題がなければ apply を実行
  • 55. 55Copyright © 2020 Networld Corporation All Rights Reserved. (6) apply が完了
  • 56. 56Copyright © 2020 Networld Corporation All Rights Reserved. (7) Azure にプロビジョニングされていることを確認
  • 57. Copyright © 2020 Networld Corporation All Rights Reserved. ハイブリッドクラウドを実現する Terraform Cloud Business
  • 58. 58Copyright © 2020 Networld Corporation All Rights Reserved. Terraform Cloud Business とは ハイブリッドクラウドで 簡単・安全・便利 に使うなら Terraform Cloud Business こんなひとにオススメ!! • GUI がほしい • サポートがほしい • チームで取り組みたい (属人性をできる限りなくしたい) • 管理・監査が必要 (ヒヤリハットを防ぎたい) • オンプレミスでも使いたい
  • 59. 59Copyright © 2020 Networld Corporation All Rights Reserved. いままでの Terraform Cloud で実現できなかったこと なぜ 従来のTerraform Cloud ではダメだったのか? • オンプレミスの環境に接続できない Terraform Cloud AWS Azure GCP 【ザックリ理解】 • Terraform Cloud は HashiCorp による SaaS • パブリッククラウドのエンドポイントは パブリックIP (当たり前) • 通常では vCenter や SCVMM は パブリックに公開しない (当たり前)
  • 60. 60Copyright © 2020 Networld Corporation All Rights Reserved. Terraform Cloud Business で実現できること Terraform Cloud でもオンプレミスがイケる • エージェント経由でオンプレミスに接続できる Terraform Cloud AWS Azure GCP 【ザックリ理解!!】 Terraform Cloud Agent が https で Terraform Cloud へ疎通し、 代理でプロビジョニングする
  • 61. 61Copyright © 2020 Networld Corporation All Rights Reserved. Terraform Cloud Business でのオンプレ対応ができると Terraform Cloud の利便性そのままに オンプレミスでのプロビジョニングができる SAML や 監査ログなどのエンタープライズ向けの 機能を利用したい場合でも 資産を持たない選択ができる パブリッククラウドとオンプレミスを ひとつのツール (Terraform Cloud) ですべて管理できる = シームレスなハイブリッドクラウドを実現 !!
  • 62. 62Copyright © 2020 Networld Corporation All Rights Reserved. (1) Terraform Cloud Agent のトークンのセットアップ
  • 63. 63Copyright © 2020 Networld Corporation All Rights Reserved. (2) ダウンロードし、unzip したバイナリを実行
  • 64. 64Copyright © 2020 Networld Corporation All Rights Reserved. (3) Terraform Cloud に エージェントが認識される
  • 65. 65Copyright © 2020 Networld Corporation All Rights Reserved. (4) ワークスペース設定で [ エージェント実行 ] を指定
  • 66. 66Copyright © 2020 Networld Corporation All Rights Reserved. (5) 変数を入力、必要であれば秘匿化し、plan を実行
  • 67. 67Copyright © 2020 Networld Corporation All Rights Reserved. (6) エージェント側に plan がリクエストされる
  • 68. 68Copyright © 2020 Networld Corporation All Rights Reserved. (7) plan の結果を確認し、問題がなければ apply を実行
  • 69. 69Copyright © 2020 Networld Corporation All Rights Reserved. (8) vSphere にプロビジョニングされていることを確認
  • 70. 70Copyright © 2020 Networld Corporation All Rights Reserved. Terraform Cloud Business 注目機能 : Sentinel Terraform のポリシー管理機能 Sentinel こんなひとにオススメ!! • GUI がほしい • サポートがほしい • チームで取り組みたい (属人性をできる限りなくしたい) • 管理・監査が必要 (ヒヤリハットを防ぎたい) • オンプレミスでも使いたい 【ザックリ理解!!】 特にこの部分に有効で、 いろいろできちゃう Terraform で 事故が起きないようポリシー設定できる
  • 71. 71Copyright © 2020 Networld Corporation All Rights Reserved. Terraform Cloud Business 注目機能 : Sentinel Policy as Code : ポリシーをコード化し、プロビジョニングする ときに自動的にルールが適用されているか確認。 Version Control : ポリシー作成やバージョン管理、コードの レビューなどを既存の VCS ベースの手法で実現。 Policy Sets : 複数のポリシーをグループ化し、複数の異なる 環境に対し、独自のルールの設定が可能。 Testing : Sentinel Simulator により、カンタンに ポリシーのテストや開発が可能。
  • 72. 72Copyright © 2020 Networld Corporation All Rights Reserved. Sentinel にはどんなポリシーがあるのか? VMware 向けのサンプルだと… Azure 向けのサンプルだと… https://www.terraform.io/docs/cloud/sentinel/examples.html
  • 73. 73Copyright © 2020 Networld Corporation All Rights Reserved. Sentinel はどうやって設定するのか? VCS にコードを作成して… https://github.com/hashicorp/terraform-guides/blob/master/governance/second-generation/vmware/restrict-vm-disk-size.sentinel リポジトリからポリシーを設定
  • 74. Copyright © 2020 Networld Corporation All Rights Reserved. まとめ
  • 75. 75Copyright © 2020 Networld Corporation All Rights Reserved. まとめ : Infrastructure as Code (Iac) とは インフラ CPUやメモリ、ディスクといったリソース、 あるいは仮想マシンやアプライアンスそのもの コードで 表現することを
  • 76. 76Copyright © 2020 Networld Corporation All Rights Reserved. まとめ : Terraform / Terraform Cloud の実行ステップ Terraform をインストールし、定義ファイルを作成・配置する (定義ファイルとは 拡張子 .tf のテキストデータ) [ STEP1 ] インストールと コードの作成 [ STEP2 ] terraform init Terraform プロバイダーを設定する (プロバイダーとは プロビジョニング対象製品のための Terraform のプラグイン) Terraform が定義ファイルに基づいて、各製品の API に 対応したコードを自動生成、検証(リハーサル/ドライラン)する [ STEP3 ] terraform plan 実際に環境へコードを適用して、プロビジョニングする [ STEP4 ] terraform apply
  • 77. 77Copyright © 2020 Networld Corporation All Rights Reserved. まとめ : Terraform Cloud Business とは ハイブリッドクラウドで 安心・安全 に使うなら Terraform Cloud Business こんなひとにオススメ!! • GUI がほしい • サポートがほしい • チームで取り組みたい (属人性をできる限りなくしたい) • 管理・監査が必要 (ヒヤリハットを防ぎたい) • オンプレミスでも使いたい
  • 78. 78Copyright © 2020 Networld Corporation All Rights Reserved. まとめ : 実践してみよう !! Azure と Terraform (OSS版) のデモの再現は ホントにゼロからできるようになっています !! 一般的な Windows PC と 無料試用版の Azure で再現できます。 セッションを見聞きするだけよりも、 実際に手を動かす方が理解できるはずです。 ぜひ Terraform で IaC をやってみてください !! Azure 用サンプルコードの GitHub リポジトリです