株式会社ネットワールド
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

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

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