More Related Content
PDF
Nutanix エンジニアのための Git 入門 :序 PDF
Cloud Foundryで学ぶ、PaaSのしくみ講座 PDF
20190722 Building handy CI with zuul and OpenStack PDF
Cloud foundryのコミュニティを紹介するよ PDF
PPTX
Terraformで始めるInfrastructure as Code PPTX
高速にコンテナを起動できるイメージフォーマット (NTT Tech Conference #2) PDF
Dockerの基本と応用~快適コンテナライフを実現するArukas~ What's hot
PDF
PDF
第18回Cloud Foundry輪読会用 Buildpackを使ってアプリを 載せるためのアプローチ PDF
PPTX
PDF
OCIv2?!軽量高速なイケてる次世代イメージ仕様の最新動向を抑えよう! PPTX
PDF
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜 PDF
PaaS / Cloud Foundry makes you happy PDF
PDF
Prometheus at Preferred Networks PPTX
PDF
20190722 OpenStack community past present future PPTX
TungstenFabricでOpenStackとk8sをラクラク管理 PPTX
PDF
PDF
PDF
忙しい人の5分で分かるDocker 2017年春Ver PDF
Docker国内外本番環境サービス事例のご紹介 PPTX
Moby Project (May 25, 2017, Tokyo) PPTX
Similar to ゼロからはじめるTerraformでのDevOps2021
PDF
QuickDemo HashiCorp Terraform with Microsoft Azure and VMware vSphere PDF
Provisioning Nutanix VMs with Terraform PDF
見終わったらすぐできる! VMware & Nutanix ユーザーのためのTerraform Cloud PDF
PPTX
Step by stepで学ぶTerraformによる監視付きAWS構築 PDF
OpenStack上の環境構築自動化に向けたTerraform/Pulumiの活用 PDF
Terraformを活用した自動化デモ_F5-NGINX_Community-20200805 PDF
PDF
PDF
AWSにおけるIaCを活かしたTerraformの使い方2選! ~循環型IaCとマルチクラウドチックなDR環境~ (HashiTalks: Japan 発... PDF
PDF
Gmo media terraform slide PDF
PDF
Nutanix Meetup 22.01 Wataru Unno PDF
F5 meetup terraform & vault PDF
LAMPもDockerもKubernetesも数クリックでデプロイ! Nutanix & Calmによるインフラとアプリ展開の自動化 PDF
PDF
PPTX
PDF
Recently uploaded
PDF
How We Operated Ticket-Driven Development in JIRA.pdf PDF
論文紹介:Simultaneous Detection and Interaction Reasoning for Object-Centric Acti... PDF
ReflecTrace: Hover Interface using Corneal Reflection Images Captured by Smar... PDF
論文紹介:"MM-Tracker: Motion Mamba for UAV-platform Multiple Object Tracking", "M... PDF
手軽に広範囲でプライバシーを守りながら人数カウントできる ~ LoRaWAN AI人流カウンター PF52 日本語カタログ PDF
論文紹介:"Reflexion: language agents with verbal reinforcement learning", "MA-LMM... PDF
歴史好きのスクラム話 JBUG名古屋#5 AI時代のデータドリブンなプロジェクト管理 PDF
論文紹介: "Locality-Aware Zero-Shot Human-Object Interaction Detection" "Disentan... ゼロからはじめる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.
- 35.
- 36.
- 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.
- 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 によるビジネスの加速!