SlideShare a Scribd company logo
株式会社ネットワールド
SI技術本部 ソリューションアーキテクト課
海野 航
Nutanix DevOps Night #1
ゼロからはじめる
Terraform での DevOps 2021
2
Copyright © 2021 Networld Corporation All Rights Reserved.
もくじ
• はじめに : DevOps と Infrastructure as Code
• Infrastructure as Code のいいところ
• Terraform × Nutanix の初歩!
AHV 仮想マシンのプロビジョニングの流れ
• HCL コードの解説
• まとめ
Copyright © 2021 Networld Corporation All Rights Reserved.
はじめに : DevOps と Infrastructure as Code
4
Copyright © 2021 Networld Corporation All Rights Reserved.
本日のポイント
DevOps を実装するための
Infrastructure as Code とは何なのかを知る
Terraform と Nutanix の 組み合わせ を知る
HashiCorp Configuration Language (HCL) を知る
5
Copyright © 2021 Networld Corporation All Rights Reserved.
DevOps と IaC の定義 (諸説ある…)
DevOps Infrastructure as Code
✓ Developer (開発者) と Operator
(運用者) が協力する、あるいはチーム
分けなどをすることなく一緒に作業を
する文化。
✓ これにより従来よりも高速にアプリや
サービスを提供することができる。
ビジネスを加速させて、より高い市場
競争力を得ることが目的。
✓ DevOps を実現する手法のひとつ。
• その他の手法には…
CI/CD、マイクロサービス、モニ
タリングとロギングなどがある。
✓ インフラをコードとして管理すること。
ここでのインフラはCPUやメモリや
ディスク、ネットワークなどを示す。
6
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform は IaC を実現するツールです
6
インフラ
CPUやメモリ、ディスクといったリソース、
あるいは仮想マシンやアプライアンスそのもの
コードで
表現すること
を
7
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform は世界での実績ナンバーワンの IaC 製品
再利用可能な
ソースコードとして
インフラの構成を
定義する
多様なインフラを
ワークフローを
変えることなく
導入する
出典 : Terraformで超サクッとループで
リソースを用意する方法
https://dev.classmethod.jp/cloud/
aws/terraform-network-variable/
出典 : Azure 上の HashiCorp Terraform
https://azure.microsoft.com/ja-
jp/solutions/devops/terraform/
エンタープライズクラウドでも Terraform 使ったらいいじゃん!
8
Copyright © 2021 Networld Corporation All Rights Reserved.
インフラを使いたい人が、セルフサービスで使えるように
8
導
入
前
導
入
後
例えば
ソフト開発者
例えば
ソフト開発者
インフラ要件
(作業指示書)
Terraform の
コード (HCL)
インフラ SE が
作業を実施
Terraform が
プロビジョニング
開発者が
要求した
リソース
開発者が
要求した
リソース
Copyright © 2021 Networld Corporation All Rights Reserved.
Infrastructure as Code のいいところ
10
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform : IaC を導入して得られる効果
• インフラ構築・改変・廃棄の 正確性とスピードの向上
• コード化によるインフラの可視化で 管理性向上
(バージョン管理やレビューが容易に)
• Nutanix やその他各種オンプレミス製品、
クラウドサービスの使用感やポリシーの統一
• これらによるコストの削減
11
Copyright © 2021 Networld Corporation All Rights Reserved.
操作手順のコピペは難しいけど、コードはコピペできる
IaC ではない Infrastructure as Code
✓ マニュアルベースによる手作業
✓ 自動化のハードルの高さ
(インフラであんまり RPA とか使わない気が…)
✓ コードベースによる高い再現性
✓ 高度に自動化され、実行が簡単
12
Copyright © 2021 Networld Corporation All Rights Reserved.
何かあったときの履歴管理、意外と重要ではありませんか?
IaC ではない Infrastructure as Code
✓ Excel や Word によるパラメータシート
✓ 人間の意識に頼る変更履歴の管理
✓ 実際のパラメータそのものを含むコード
✓ バージョン管理システムとの親和性
13
Copyright © 2021 Networld Corporation All Rights Reserved.
当たり前ですが…
• コードを作成するための時間は、手作業の数倍~数十倍かかる
(テストなども考慮する)
• 初期構築のように、一般的には1回しかやらないものを
コード化しても、現実的には効果が低い
• ツールや環境のバージョンアップに伴うコードの修正作業の発生
• イレギュラーな手作業を挟んだときに、リカバリー負荷が
高いことがある
• コードを習得するための学習コストがかかる
なんでもかんでも IaC にすればいいわけではない
14
Copyright © 2021 Networld Corporation All Rights Reserved.
HashiCorp Configuration Language
HashiCorp Terraform の専用言語
• 特徴
₋宣言型のアーキテクチャ (Ansibleは手続き型)
₋インフラの状態を宣言するように記述するようなイメージ
₋Terraform 対応してる製品やサービスが多いので、汎用性が高い
₋コード内にコメントを書きやすく、学習コストが比較的低い
₋Web 上に情報が多い
₋プロビジョニングは得意だが、OS 内の細かな設定はどちらかと言えば苦手
(そういうのはシェルを使ったり、Ansible と組み合わせる)
15
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform の最重要成果物 : TFSTATE ファイル
Terraform が管理しているリソースの状態を示すファイル
• 役割
₋Terraform によってプロビジョニングされると同時に JSON 形式で生成される
₋これを参照・比較することによって、対象となるリソースの現在の状態や
その遷移がわかる
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform × Nutanix の初歩!
AHV 仮想マシンのプロビジョニングの流れ
17
Copyright © 2021 Networld Corporation All Rights Reserved.
注意事項
今回紹介する内容について、
Nutanix ならびに HashiCorp では ノンサポートです
OSS 版の Terraform は コミュニティサポートです
( Terraform のサポートが必要な場合は有償版を!)
個人的に聞かれたら できるだけがんばります
18
Copyright © 2021 Networld Corporation All Rights Reserved.
今回の前提条件
• Terraform 環境の前提条件
₋Windows 10 バージョン 20H2
₋Terraform 0.14.8 (2021年3月17日時点で最新)
₋Nutanix AOS 5.15
• GitHub リポジトリ
₋https://github.com/unnowataru/terraform-nutanix-sample
19
Copyright © 2021 Networld Corporation All Rights Reserved.
仮想マシン プロビジョニングまでの流れ
仮想マシンのディスクイメージ化
UUID の確認と取得
( ネットワーク / ディスクイメージ )
Terraform のインストール例
コードの作成
Terraform の実行
( init / plan / apply )
20
Copyright © 2021 Networld Corporation All Rights Reserved.
このセクションのゴール
• Terraform を使って コード で VM をプロビジョニングする
21
Copyright © 2021 Networld Corporation All Rights Reserved.
事前準備 : 仮想マシンのディスクイメージ化
• Terraform を使ってプロビジョニングしたい仮想マシンの
テンプレート を ディスクイメージ に変換します
image.create <target-img> image_type=kDiskImage
clone_from_vmdisk=vm:<taget-vm>:scsi.0
ここでは <unnow-win2016template> という仮想マシンを
<unnow_win2016_img> というイメージに変換しようとしている
参考ブログ : NTNX>日記
VM から Acropolis Image Service のディスクイメージを作成する。
http://blog.ntnx.jp/entry/2017/05/06/133123
22
Copyright © 2021 Networld Corporation All Rights Reserved.
UUID の確認
• ネットワークの UUID : net.list
• ディスクイメージの UUID : image.list
<0> という名前のネットワークに接続させたい
<unnow_win2016_img> を使いたい
23
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のインストール例 (Windows 環境)
• Terraform のダウンロード
https://www.terraform.io/ からダウンロード
24
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のインストール例 (Windows 環境)
• 展開して生成されたフォルダーを任意の場所に配置
25
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のインストール例 (Windows 環境)
• 環境変数 Path の設定
26
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のインストール例 (Windows 環境)
• 動作確認 : コマンドプロンプトから “terraform -version”
27
Copyright © 2021 Networld Corporation All Rights Reserved.
コードの作成
• GitHub から [ main.tf ] と [ terraform.tfvars ] と
[ versions.tf ] をコピペ
https://github.com/unnowataru/terraform-nutanix-sample
28
Copyright © 2021 Networld Corporation All Rights Reserved.
コードの作成
• 任意のフォルダーに [ main.tf ] と [ terraform.tfvars ] と
[ versions.tf ] をコピペして新規作成
https://github.com/unnowataru/terraform-nutanix-sample
29
Copyright © 2021 Networld Corporation All Rights Reserved.
コードの作成
• terraform.tfvars のパラメータを各環境固有のものに置き換える
30
Copyright © 2021 Networld Corporation All Rights Reserved.
terraform init
• コマンドプロンプトにて main.tf と terraform.tfvars を
配置したフォルダーに移動して “terraform init” を実行
31
Copyright © 2021 Networld Corporation All Rights Reserved.
terraform init
• “terraform init” を実行すると、Nutanixのプロバイダーに応じた
プラグインが自動的にダウンロードされる
32
Copyright © 2021 Networld Corporation All Rights Reserved.
terraform plan
• コマンドプロンプトにて “terraform plan” を実行
• 特に問題がなければ”terraform apply”が実行可能な状態に遷移
33
Copyright © 2021 Networld Corporation All Rights Reserved.
terraform apply
• コマンドプロンプトにて “terraform apply” を実行
34
Copyright © 2021 Networld Corporation All Rights Reserved.
terraform apply
• プロビジョニング完了
35
Copyright © 2021 Networld Corporation All Rights Reserved.
DEMO VIDEO (4分ぐらい)
Copyright © 2021 Networld Corporation All Rights Reserved.
HCL コードの解説
37
Copyright © 2021 Networld Corporation All Rights Reserved.
ちょっとテクニカルな解説 : Terraform のコード
37
provider : 対象製品を定義
variable : 変数を定義
data : 既存リソースから情報を取り込む
resource : 実際に作成するリソースを記述
38
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
variable : 変数を定義するセクション
ユーザー名やクラスターの情報、プロビジョニングしたい仮想マシンの
名前、スペックやネットワークなどを変数として定義している。
39
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
provider : インフラを定義するセクション
ここでは nutanix としているが、AWS や Azure など
プロビジョニング対象となるインフラをここで定義する。
ポートをデフォルトから変更している場合は注意しましょう。
40
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
data : 既存のリソースから情報を取り込む
変数で指定したオブジェクトから情報を取り込み、プロビジョニングに
利用できるようにする。
この例では、既存のクラスターの情報を確認し、プロビジョニングする
対象のクラスターとして設定している。
41
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のコード解説 : main.tf
resource : 実際に作成するリソースを定義
変数で指定した情報や data で取り込んだ情報を利用して、対象となる
インフラにリソースをプロビジョニング(作成)する。
当然のことながら、HCLはプログラミング言語なので、演算子なども
きちんと使える。
ここでは変数 “count” に応じて仮想マシンの名前を1から指定した数字
まで、前ゼロ3桁でプロビジョニングするような仕組みになっている。
HCLで定義されている文字列 自分で名前を付けるオブジェクト
42
Copyright © 2021 Networld Corporation All Rights Reserved.
Terraform のコード解説 : terraform.tfvars
パスワードやアクセスキーのお漏らしには注意しましょう!!
Copyright © 2021 Networld Corporation All Rights Reserved.
まとめ と ポイント
44
Copyright © 2021 Networld Corporation All Rights Reserved.
ポイント
• OSS 版 Terraform 単体では CI/CD を実現する
ハードルが高いので、Terraform Cloud や その他の
CI/CD ツールと組み合わせて実装する
• とりあえず Terraform で AHV の仮想マシンを
プロビジョニングするだけなら比較的カンタン
45
Copyright © 2021 Networld Corporation All Rights Reserved.
まとめ Terraform を導入して得られる効果
• インフラ構築・改変・廃棄の 正確性とスピードの向上
• コード化によるインフラの可視化で 管理性向上
(バージョン管理やレビューが容易に)
• Nutanix やその他各種オンプレミス製品、
クラウドサービスの使用感やポリシーの統一
• これらによるコストの削減
Terraform によるプロビジョニングと管理はあくまでも手段!
本当に目指すべきは DevOps によるビジネスの加速!
ゼロからはじめるTerraformでのDevOps2021

More Related Content

PDF
Nutanix エンジニアのための Git 入門 :序
PDF
Cloud Foundryで学ぶ、PaaSのしくみ講座
PDF
20190722 Building handy CI with zuul and OpenStack
PDF
Cloud foundryのコミュニティを紹介するよ
PDF
はじめてのCF buildpack
PPTX
Terraformで始めるInfrastructure as Code
PPTX
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
PDF
Dockerの基本と応用~快適コンテナライフを実現するArukas~
Nutanix エンジニアのための Git 入門 :序
Cloud Foundryで学ぶ、PaaSのしくみ講座
20190722 Building handy CI with zuul and OpenStack
Cloud foundryのコミュニティを紹介するよ
はじめてのCF buildpack
Terraformで始めるInfrastructure as Code
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2)
Dockerの基本と応用~快適コンテナライフを実現するArukas~

What's hot (20)

PDF
高速にコンテナを起動できるイメージフォーマット
PDF
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
PDF
runC概要と使い方
PDF
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
PPTX
Moby Project
PDF
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
PDF
PaaS / Cloud Foundry makes you happy
PDF
OpenStackアップストリーム活動実践 中級
PDF
Prometheus at Preferred Networks
PPTX
Dockerのネットワークについて
PDF
20190722 OpenStack community past present future
PPTX
TungstenFabricでOpenStackとk8sをラクラク管理
PPTX
Dockerが抱えるネットワークの課題
PDF
PTLのお仕事とリリースパイプラインの裏側
PDF
Dockerコミュニティ近況
PDF
忙しい人の5分で分かるDocker 2017年春Ver
PDF
Docker国内外本番環境サービス事例のご紹介
PPTX
Moby Project (May 25, 2017, Tokyo)
PPTX
Prometheus入門から運用まで徹底解説
高速にコンテナを起動できるイメージフォーマット
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ
runC概要と使い方
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう!
Moby Project
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
PaaS / Cloud Foundry makes you happy
OpenStackアップストリーム活動実践 中級
Prometheus at Preferred Networks
Dockerのネットワークについて
20190722 OpenStack community past present future
TungstenFabricでOpenStackとk8sをラクラク管理
Dockerが抱えるネットワークの課題
PTLのお仕事とリリースパイプラインの裏側
Dockerコミュニティ近況
忙しい人の5分で分かるDocker 2017年春Ver
Docker国内外本番環境サービス事例のご紹介
Moby Project (May 25, 2017, Tokyo)
Prometheus入門から運用まで徹底解説
Ad

Similar to ゼロからはじめるTerraformでのDevOps2021 (20)

PDF
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
PDF
Provisioning Nutanix VMs with Terraform
PDF
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
PDF
Terraform始めました
PPTX
Step by stepで学ぶTerraformによる監視付きAWS構築
PDF
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
PDF
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
PDF
terraform基礎
PDF
Terraformをいじってみて
PDF
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
PDF
PDF
Gmo media terraform slide
PDF
OpenStack入門 2016/06/10
PDF
Nutanix Meetup 22.01 Wataru Unno
PDF
F5 meetup terraform &amp; vault
PDF
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
PDF
Terraforming
PDF
TerraformによるIaCの導入
PPTX
今からでも間に合う!インフラ自動化超入門 @渋谷
PDF
OSSを活用したIaCの実現
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere
Provisioning Nutanix VMs with Terraform
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud
Terraform始めました
Step by stepで学ぶTerraformによる監視付きAWS構築
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805
terraform基礎
Terraformをいじってみて
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発...
Gmo media terraform slide
OpenStack入門 2016/06/10
Nutanix Meetup 22.01 Wataru Unno
F5 meetup terraform &amp; vault
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化
Terraforming
TerraformによるIaCの導入
今からでも間に合う!インフラ自動化超入門 @渋谷
OSSを活用したIaCの実現
Ad

ゼロからはじめるTerraformでのDevOps2021

  • 2. 2 Copyright © 2021 Networld Corporation All Rights Reserved. もくじ • はじめに : DevOps と Infrastructure as Code • Infrastructure as Code のいいところ • Terraform × Nutanix の初歩! AHV 仮想マシンのプロビジョニングの流れ • HCL コードの解説 • まとめ
  • 3. Copyright © 2021 Networld Corporation All Rights Reserved. はじめに : DevOps と Infrastructure as Code
  • 4. 4 Copyright © 2021 Networld Corporation All Rights Reserved. 本日のポイント DevOps を実装するための Infrastructure as Code とは何なのかを知る Terraform と Nutanix の 組み合わせ を知る HashiCorp Configuration Language (HCL) を知る
  • 5. 5 Copyright © 2021 Networld Corporation All Rights Reserved. DevOps と IaC の定義 (諸説ある…) DevOps Infrastructure as Code ✓ Developer (開発者) と Operator (運用者) が協力する、あるいはチーム 分けなどをすることなく一緒に作業を する文化。 ✓ これにより従来よりも高速にアプリや サービスを提供することができる。 ビジネスを加速させて、より高い市場 競争力を得ることが目的。 ✓ DevOps を実現する手法のひとつ。 • その他の手法には… CI/CD、マイクロサービス、モニ タリングとロギングなどがある。 ✓ インフラをコードとして管理すること。 ここでのインフラはCPUやメモリや ディスク、ネットワークなどを示す。
  • 6. 6 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform は IaC を実現するツールです 6 インフラ CPUやメモリ、ディスクといったリソース、 あるいは仮想マシンやアプライアンスそのもの コードで 表現すること を
  • 7. 7 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform は世界での実績ナンバーワンの IaC 製品 再利用可能な ソースコードとして インフラの構成を 定義する 多様なインフラを ワークフローを 変えることなく 導入する 出典 : Terraformで超サクッとループで リソースを用意する方法 https://dev.classmethod.jp/cloud/ aws/terraform-network-variable/ 出典 : Azure 上の HashiCorp Terraform https://azure.microsoft.com/ja- jp/solutions/devops/terraform/ エンタープライズクラウドでも Terraform 使ったらいいじゃん!
  • 8. 8 Copyright © 2021 Networld Corporation All Rights Reserved. インフラを使いたい人が、セルフサービスで使えるように 8 導 入 前 導 入 後 例えば ソフト開発者 例えば ソフト開発者 インフラ要件 (作業指示書) Terraform の コード (HCL) インフラ SE が 作業を実施 Terraform が プロビジョニング 開発者が 要求した リソース 開発者が 要求した リソース
  • 9. Copyright © 2021 Networld Corporation All Rights Reserved. Infrastructure as Code のいいところ
  • 10. 10 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform : IaC を導入して得られる効果 • インフラ構築・改変・廃棄の 正確性とスピードの向上 • コード化によるインフラの可視化で 管理性向上 (バージョン管理やレビューが容易に) • Nutanix やその他各種オンプレミス製品、 クラウドサービスの使用感やポリシーの統一 • これらによるコストの削減
  • 11. 11 Copyright © 2021 Networld Corporation All Rights Reserved. 操作手順のコピペは難しいけど、コードはコピペできる IaC ではない Infrastructure as Code ✓ マニュアルベースによる手作業 ✓ 自動化のハードルの高さ (インフラであんまり RPA とか使わない気が…) ✓ コードベースによる高い再現性 ✓ 高度に自動化され、実行が簡単
  • 12. 12 Copyright © 2021 Networld Corporation All Rights Reserved. 何かあったときの履歴管理、意外と重要ではありませんか? IaC ではない Infrastructure as Code ✓ Excel や Word によるパラメータシート ✓ 人間の意識に頼る変更履歴の管理 ✓ 実際のパラメータそのものを含むコード ✓ バージョン管理システムとの親和性
  • 13. 13 Copyright © 2021 Networld Corporation All Rights Reserved. 当たり前ですが… • コードを作成するための時間は、手作業の数倍~数十倍かかる (テストなども考慮する) • 初期構築のように、一般的には1回しかやらないものを コード化しても、現実的には効果が低い • ツールや環境のバージョンアップに伴うコードの修正作業の発生 • イレギュラーな手作業を挟んだときに、リカバリー負荷が 高いことがある • コードを習得するための学習コストがかかる なんでもかんでも IaC にすればいいわけではない
  • 14. 14 Copyright © 2021 Networld Corporation All Rights Reserved. HashiCorp Configuration Language HashiCorp Terraform の専用言語 • 特徴 ₋宣言型のアーキテクチャ (Ansibleは手続き型) ₋インフラの状態を宣言するように記述するようなイメージ ₋Terraform 対応してる製品やサービスが多いので、汎用性が高い ₋コード内にコメントを書きやすく、学習コストが比較的低い ₋Web 上に情報が多い ₋プロビジョニングは得意だが、OS 内の細かな設定はどちらかと言えば苦手 (そういうのはシェルを使ったり、Ansible と組み合わせる)
  • 15. 15 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform の最重要成果物 : TFSTATE ファイル Terraform が管理しているリソースの状態を示すファイル • 役割 ₋Terraform によってプロビジョニングされると同時に JSON 形式で生成される ₋これを参照・比較することによって、対象となるリソースの現在の状態や その遷移がわかる
  • 16. Copyright © 2021 Networld Corporation All Rights Reserved. Terraform × Nutanix の初歩! AHV 仮想マシンのプロビジョニングの流れ
  • 17. 17 Copyright © 2021 Networld Corporation All Rights Reserved. 注意事項 今回紹介する内容について、 Nutanix ならびに HashiCorp では ノンサポートです OSS 版の Terraform は コミュニティサポートです ( Terraform のサポートが必要な場合は有償版を!) 個人的に聞かれたら できるだけがんばります
  • 18. 18 Copyright © 2021 Networld Corporation All Rights Reserved. 今回の前提条件 • Terraform 環境の前提条件 ₋Windows 10 バージョン 20H2 ₋Terraform 0.14.8 (2021年3月17日時点で最新) ₋Nutanix AOS 5.15 • GitHub リポジトリ ₋https://github.com/unnowataru/terraform-nutanix-sample
  • 19. 19 Copyright © 2021 Networld Corporation All Rights Reserved. 仮想マシン プロビジョニングまでの流れ 仮想マシンのディスクイメージ化 UUID の確認と取得 ( ネットワーク / ディスクイメージ ) Terraform のインストール例 コードの作成 Terraform の実行 ( init / plan / apply )
  • 20. 20 Copyright © 2021 Networld Corporation All Rights Reserved. このセクションのゴール • Terraform を使って コード で VM をプロビジョニングする
  • 21. 21 Copyright © 2021 Networld Corporation All Rights Reserved. 事前準備 : 仮想マシンのディスクイメージ化 • Terraform を使ってプロビジョニングしたい仮想マシンの テンプレート を ディスクイメージ に変換します image.create <target-img> image_type=kDiskImage clone_from_vmdisk=vm:<taget-vm>:scsi.0 ここでは <unnow-win2016template> という仮想マシンを <unnow_win2016_img> というイメージに変換しようとしている 参考ブログ : NTNX>日記 VM から Acropolis Image Service のディスクイメージを作成する。 http://blog.ntnx.jp/entry/2017/05/06/133123
  • 22. 22 Copyright © 2021 Networld Corporation All Rights Reserved. UUID の確認 • ネットワークの UUID : net.list • ディスクイメージの UUID : image.list <0> という名前のネットワークに接続させたい <unnow_win2016_img> を使いたい
  • 23. 23 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • Terraform のダウンロード https://www.terraform.io/ からダウンロード
  • 24. 24 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • 展開して生成されたフォルダーを任意の場所に配置
  • 25. 25 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • 環境変数 Path の設定
  • 26. 26 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のインストール例 (Windows 環境) • 動作確認 : コマンドプロンプトから “terraform -version”
  • 27. 27 Copyright © 2021 Networld Corporation All Rights Reserved. コードの作成 • GitHub から [ main.tf ] と [ terraform.tfvars ] と [ versions.tf ] をコピペ https://github.com/unnowataru/terraform-nutanix-sample
  • 28. 28 Copyright © 2021 Networld Corporation All Rights Reserved. コードの作成 • 任意のフォルダーに [ main.tf ] と [ terraform.tfvars ] と [ versions.tf ] をコピペして新規作成 https://github.com/unnowataru/terraform-nutanix-sample
  • 29. 29 Copyright © 2021 Networld Corporation All Rights Reserved. コードの作成 • terraform.tfvars のパラメータを各環境固有のものに置き換える
  • 30. 30 Copyright © 2021 Networld Corporation All Rights Reserved. terraform init • コマンドプロンプトにて main.tf と terraform.tfvars を 配置したフォルダーに移動して “terraform init” を実行
  • 31. 31 Copyright © 2021 Networld Corporation All Rights Reserved. terraform init • “terraform init” を実行すると、Nutanixのプロバイダーに応じた プラグインが自動的にダウンロードされる
  • 32. 32 Copyright © 2021 Networld Corporation All Rights Reserved. terraform plan • コマンドプロンプトにて “terraform plan” を実行 • 特に問題がなければ”terraform apply”が実行可能な状態に遷移
  • 33. 33 Copyright © 2021 Networld Corporation All Rights Reserved. terraform apply • コマンドプロンプトにて “terraform apply” を実行
  • 34. 34 Copyright © 2021 Networld Corporation All Rights Reserved. terraform apply • プロビジョニング完了
  • 35. 35 Copyright © 2021 Networld Corporation All Rights Reserved. DEMO VIDEO (4分ぐらい)
  • 36. Copyright © 2021 Networld Corporation All Rights Reserved. HCL コードの解説
  • 37. 37 Copyright © 2021 Networld Corporation All Rights Reserved. ちょっとテクニカルな解説 : Terraform のコード 37 provider : 対象製品を定義 variable : 変数を定義 data : 既存リソースから情報を取り込む resource : 実際に作成するリソースを記述
  • 38. 38 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf variable : 変数を定義するセクション ユーザー名やクラスターの情報、プロビジョニングしたい仮想マシンの 名前、スペックやネットワークなどを変数として定義している。
  • 39. 39 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf provider : インフラを定義するセクション ここでは nutanix としているが、AWS や Azure など プロビジョニング対象となるインフラをここで定義する。 ポートをデフォルトから変更している場合は注意しましょう。
  • 40. 40 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf data : 既存のリソースから情報を取り込む 変数で指定したオブジェクトから情報を取り込み、プロビジョニングに 利用できるようにする。 この例では、既存のクラスターの情報を確認し、プロビジョニングする 対象のクラスターとして設定している。
  • 41. 41 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : main.tf resource : 実際に作成するリソースを定義 変数で指定した情報や data で取り込んだ情報を利用して、対象となる インフラにリソースをプロビジョニング(作成)する。 当然のことながら、HCLはプログラミング言語なので、演算子なども きちんと使える。 ここでは変数 “count” に応じて仮想マシンの名前を1から指定した数字 まで、前ゼロ3桁でプロビジョニングするような仕組みになっている。 HCLで定義されている文字列 自分で名前を付けるオブジェクト
  • 42. 42 Copyright © 2021 Networld Corporation All Rights Reserved. Terraform のコード解説 : terraform.tfvars パスワードやアクセスキーのお漏らしには注意しましょう!!
  • 43. Copyright © 2021 Networld Corporation All Rights Reserved. まとめ と ポイント
  • 44. 44 Copyright © 2021 Networld Corporation All Rights Reserved. ポイント • OSS 版 Terraform 単体では CI/CD を実現する ハードルが高いので、Terraform Cloud や その他の CI/CD ツールと組み合わせて実装する • とりあえず Terraform で AHV の仮想マシンを プロビジョニングするだけなら比較的カンタン
  • 45. 45 Copyright © 2021 Networld Corporation All Rights Reserved. まとめ Terraform を導入して得られる効果 • インフラ構築・改変・廃棄の 正確性とスピードの向上 • コード化によるインフラの可視化で 管理性向上 (バージョン管理やレビューが容易に) • Nutanix やその他各種オンプレミス製品、 クラウドサービスの使用感やポリシーの統一 • これらによるコストの削減 Terraform によるプロビジョニングと管理はあくまでも手段! 本当に目指すべきは DevOps によるビジネスの加速!