Slide 1

Slide 1 text

Terraform × cloud-init で VM のセットアップを いい感じにする話 v2.1 井上 裕介 a.k.a cyokozai 第57回 情報科学若手の会

Slide 2

Slide 2 text

自己紹介 井上 裕介 a.k.a cyokozai cyokozai @cyokozai0 千葉工業大学 情報工学科 B4 ネットワークコンテンツ研究会 Nekko Cloud Team 株式会社スリーシェイク sreake事業部 学生インターン生 RCME アルバイト研究員

Slide 3

Slide 3 text

アジェンダ アジェンダ マルチリージョンプライベートクラウド Nekko Cloud の紹介 VM 作成の苦労話話 IaC の導入と実践 おわりに

Slide 4

Slide 4 text

ネットワークコンテンツ研究会 Nekko Cloud Team

Slide 5

Slide 5 text

ネットワークコンテンツ研究会 Nekko Cloud Team マルチリージョンプライベートクラウド Nekko Cloud の紹介

Slide 6

Slide 6 text

Nekko Cloud Teamでは マルチリージョンプライベートクラウド Nekko Cloud の紹介

Slide 7

Slide 7 text

Nekko Cloud Teamでは マルチリージョンプライベートクラウド Nekko Cloud の紹介 い わ ゆ る 逸 般 の 誤 家 庭 が 4 人 い る

Slide 8

Slide 8 text

Nekko Cloud Teamでは マルチリージョンプライベートクラウド Nekko Cloud の紹介 い わ ゆ る 逸 般 の 誤 家 庭 が 4 人 い る

Slide 9

Slide 9 text

マルチリージョンプライベートクラウド Nekko Cloud の紹介 メンバーの所有するサーバを VPNでつないでプライベート クラウドを制作 クラウドの設計・開発・運用を 通してクラウド技術を学ぼう! チームメンバーにクラウド リソースを提供

Slide 10

Slide 10 text

マルチリージョンプライベートクラウド Nekko Cloud の紹介 新規リージョン募集中!

Slide 11

Slide 11 text

VM 作成の苦労話

Slide 12

Slide 12 text

手動でVMを立てるには(Proxmox VEの場合) VM 作成の苦労話 ISOイメージをProxmox VEにアップロード

Slide 13

Slide 13 text

手動でVMを立てるには(Proxmox VEの場合) VM 作成の苦労話 「VMを作成」をクリック コレ

Slide 14

Slide 14 text

手動でVMを立てるには(Proxmox VEの場合) VM 作成の苦労話 VMの設定をする (コア数、メモリ数、ネットワーク etc…)

Slide 15

Slide 15 text

手動でVMを立てるには(Proxmox VEの場合) VM 作成の苦労話 VMを生成 ココをクリックして完了

Slide 16

Slide 16 text

VM”は”生成できました

Slide 17

Slide 17 text

手動でVMを立てるには(Proxmox VEの場合) 1. ISOイメージをProxmox VEにアップロード 2. 「VMを作成」をクリック 3. VMの設定をする(コア数、メモリ数、ネットワーク etc…) 4. VMを生成 VM 作成の苦労話

Slide 18

Slide 18 text

手動でVMを立てるには(Proxmox VEの場合) 1. ISOイメージをProxmox VEにアップロード 2. 「VMを作成」をクリック 3. VMの設定をする(コア数、メモリ数、ネットワーク etc…) 4. VMを生成 ここからがOSの初期設定 (ベアメタルと同じインストール作業) VM 作成の苦労話

Slide 19

Slide 19 text

Proxmox VEにおけるVM手動生成の問題点 VM 作成の苦労話 OSのインストール作業をしないといけない 複数のVMを同時に作成できない テストと本番の冪等性が保たれない

Slide 20

Slide 20 text

IaC を使って解決しよう! VM 作成の苦労話

Slide 21

Slide 21 text

IaC の導入と実践

Slide 22

Slide 22 text

IaC ( Infrastructure as Code ) IaC の導入と実践

Slide 23

Slide 23 text

IaC ( Infrastructure as Code ) ネットワークインフラをソースコードで定義する IaC の導入と実践

Slide 24

Slide 24 text

IaC ( Infrastructure as Code ) ネットワークインフラをソースコードで定義する これまで手動で行っていた手順をコード化する IaC の導入と実践

Slide 25

Slide 25 text

IaC ( Infrastructure as Code ) ネットワークインフラをソースコードで定義する これまで手動で行っていた手順をコード化する 冪等性の確保(何度やっても同じ結果になる) IaC の導入と実践

Slide 26

Slide 26 text

IaC ( Infrastructure as Code ) ネットワークインフラをソースコードで定義する これまで手動で行っていた手順をコード化する 冪等性の確保(何度やっても同じ結果になる) Gitによるバージョン管理が可能 IaC の導入と実践

Slide 27

Slide 27 text

Terraformとcloud-initを使ってVMを自動デプロ イ IaC の導入と実践 に

Slide 28

Slide 28 text

実 践 IaC の導入と実践 Nekko Cloudのクラスタ上で VMを作成してみる

Slide 29

Slide 29 text

HashiCorp社が提供するIaC時代を支え るスタンダードなプロビジョニングツー ル Terraform IaC の導入と実践 VMインスタンスの生成を行う

Slide 30

Slide 30 text

Terraform ≒ APIぶっ叩くツール IaC の導入と実践

Slide 31

Slide 31 text

Terraform ≒ APIぶっ叩くツール IaC の導入と実践 TerraformはAPIが使えるほとんど のプラットフォームで使用可能

Slide 32

Slide 32 text

IaC の導入と実践 TerraformはProxmox VEのAPIを叩く “Proxmox VE API”というRest like APIを叩いている

Slide 33

Slide 33 text

tf file - Provider IaC の導入と実践 今回使用するプロバイダは Telmate/proxmox terraform initを実行する際 インストールが実行される

Slide 34

Slide 34 text

tf file – Top Level Block IaC の導入と実践 GUIで設定していたVMの基本的な要素を定義

Slide 35

Slide 35 text

tf file – Network Block IaC の導入と実践 VMのネットワークに関する要素を定義

Slide 36

Slide 36 text

tf file – Network Block IaC の導入と実践 VMのディスクに関す る要素を定義 SCSI: Bootディスク IDE: cloud-init

Slide 37

Slide 37 text

cloud-init Linux OSのインスタンス初期設定 を自動化してくれる優れもの Linux OSの初期設定をよしなにやってくれる IaC の導入と実践

Slide 38

Slide 38 text

cloud-init IaC の導入と実践 cloud-initに関する定義 ログイン情報, SSH, Preinstallを設定できる

Slide 39

Slide 39 text

cloud-init – cloud-config IaC の導入と実践 YAMLで定義された初期設 定ファイル 初回起動時に任意のコマン ドを実行 他のツールと連携した高度 なインストールに対応

Slide 40

Slide 40 text

実 践 VM の起動完了&動作確認 IaC の導入と実践

Slide 41

Slide 41 text

まとめ まとめ VM を手作業で作成する工程は面倒 非生産的な面倒を解消するためIaCを導入 自動化できる部分は積極的に自動化しよう

Slide 42

Slide 42 text

実 践 VM ぶっ壊しゾーン IaC の導入と実践

Slide 43

Slide 43 text

おわりに

Slide 44

Slide 44 text

おわりに Q. VM作りたいだけなのにTerraformを勉強するの?

Slide 45

Slide 45 text

おわりに Q. VM作りたいだけなのにTerraformを勉強するの? A. 確かに....

Slide 46

Slide 46 text

おわりに TerraformはAPIを叩くツールである Proxmox VE APIというREST like APIがある

Slide 47

Slide 47 text

おわりに TerraformはAPIを叩くツールである Proxmox VE APIというREST like APIがある →じゃあ、自分でAPI叩けばいいじゃん

Slide 48

Slide 48 text

おわりに Proxmox VE APIあったわ

Slide 49

Slide 49 text

おわりに ライブラリあるわ

Slide 50

Slide 50 text

おわりに Proxmox API Golangある〜

Slide 51

Slide 51 text

おわりに VM用のプロビジョニングツールTerrakko作成中 Python -> Goにリプレイスを検討中

Slide 52

Slide 52 text

Thanks for watching!