Slide 1

Slide 1 text

2021/12/22 ~シンプルでスマートな書き方~ 雲勉@オンライン【勉強会】 Terraform 上手にかけるかな?

Slide 2

Slide 2 text

2 本日のハッシュタグ #kumoben 写真撮影 OK!

Slide 3

Slide 3 text

アイレットご紹介 – 会社概要 3 ◼ 社名 アイレット株式会社 ◼ 所在地 〒105-6307 東京都港区⻁ノ⾨1-23-1 ⻁ノ⾨ヒルズ森タワー7F 設⽴2003年10⽉15⽇ ◼ 資本⾦ 7,000万円 ◼ 代表者名 岩永充正 ◼ 従業員数 682名(2021年4⽉末時点) ◼ 事業内容 ITコンサルティング、システム開発、 システム保守・運⽤、 サーバハウジング・ホスティング ◼ 主要株主 KDDI株式会社

Slide 4

Slide 4 text

アイレットご紹介 – AWS APNパートナー 4 cloudpackは、Amazon Elastic Compute Cloud (Amazon EC2)やAmazon Simple Storage Service (Amazon S3)をはじめ とするAWSの各種プロダクトを利⽤する際の導⼊・設計から運⽤保守を含んだフルマネージドのサービスを提供し、バックアップ や24時間365⽇の監視/障害対応、技術的な問い合わせに対するサポートなどを⾏っております。 2013年6⽉4⽇には、AWSパートナーネットワーク(APN)において、⽇本初のAPNプレミアティアコンサルティングパートナーの ⼀社として認定されたのをはじめ、その後9年連続で認定されています。 『APNプレミアティアコンサルティングパートナー』はAPNプログラムの中で最上位のパートナーであり、厳しいクライテリアを満 たしたパートナーのみが選出され、世界で128社のみが認定されています。9年連続で認定された⽇本企業としては、cloudpack (アイレット)と株式会社野村総合研究所の2社のみとなります。

Slide 5

Slide 5 text

アイレットご紹介 – APN Consulting Partner of the Year 2017 – Japan 5 AWSのパートナーネットワークに登録している企業が参加した「AWS Partner Summit Tokyo」の中で、数あるアワー ドの中で最も実績をあげたパートナーであることを⽰す『APN Consulting Partner of the Year 2019 – Japan』を受賞 しました。cloudpackは、同賞を5度⽬の受賞となります。 『APN Consulting Partner of the Year 2019 – Japan』は、AWSが年間を通じて営業・技術・マーケティング分野にお いてパートナーとしての総合⼒を判断し、AWSのビジネスに最も貢献したパートナーに贈られるものです。cloudpack は、2013年から継続的にプレミアコンサルティングパートナーとして認定されているほか、業界に影響を与える多数のお 客様事例のリリースや、数千台規模のマイグレーション案件、基幹システムの移⾏を⼿掛けるなど、さらなるAWSビジネ スの拡⼤に貢献しました。 また、サーバーレスやマシンラーニングなどの新サービスも積極的に採⽤して成功させる⼀⽅で、エンタープライズ案件 も推進してきた結果、著しい売り上げ伸び率を達成 したことが評価されました。

Slide 6

Slide 6 text

アイレットご紹介 - 弊社の代表するサービス 6 クラウドを活⽤し お客様のご要望に幅広くお応えする 総合支援サービスです。

Slide 7

Slide 7 text

0.講師自己紹介 ◼名前 尾嵜 成真(Ozaki Seima) • 所属:クラウドインテグレーション事業部 大阪構築セクション • エンジニア歴:2年半 • アイレット歴:6ヶ月 • 趣味:ポケモン

Slide 8

Slide 8 text

アジェンダ 1.Terraformとは 2.アカウントを紐付けてみよう 3.EC2を1個作ってみよう 4.作ったものを消してみよう 5.インポートしてみよう 6.参照してみよう 7.変数化してみよう 8.EC2を3個作ってみよう 9.モジュール化してみよう 10.質疑応答(19:50~20:00)

Slide 9

Slide 9 text

1. Terraformとは 9

Slide 10

Slide 10 text

1.Terraformとは IaC

Slide 11

Slide 11 text

1.Terraformとは IaC(Infrastructure as a Code) Infrastructure = サーバーなどのシステム インフラの構築 as a Code = コードを用いて行う インフラをコード化しよう

Slide 12

Slide 12 text

1.Terraformとは マネージメントコンソール (GUI) Terraform

Slide 13

Slide 13 text

1.Terraformとは IaCのメリット 自動化 ・人為的なミスをなくせる ・時間の短縮 ・再現性が高い

Slide 14

Slide 14 text

1.Terraformとは IaCのデメリット ・スキルが必要 ・バージョン未対応 ・サービスの理解が必要

Slide 15

Slide 15 text

1.Terraformとは 15 ◼ Terraformの特徴 ・言語はHCL(HashiCorp Configuration Language) ・マルチに対応 - GCP・Azure・Vmwareなど 140以上のサービスに対応 ・HashiCorp社が提供

Slide 16

Slide 16 text

1.Terraformとは 16 Cloudformationとの比較 Terraform Cloudformation プラットフォーム マルチに対応 AWSのみ 構成 シンプル やや複雑 柔軟性 高い 低い バージョン管理 必要 不必要 ファイル管理 自分 AWS 言語 HCL yaml

Slide 17

Slide 17 text

2. アカウントを紐付けてみよう 17

Slide 18

Slide 18 text

2.アカウントを紐付けてみよう ・terraformはカレントディレクトリにある .tfファイルをすべて読む ・terraform ~ ・terraform は全てコマンドで操作 ◼ Terraformの基本

Slide 19

Slide 19 text

3.EC2を1個作ってみよう 基本的な流れ 1.コードを書く(.tfファイル) 2.init(認証情報を読み取る) 3.plan(TESTする) 4.apply(作成する)

Slide 20

Slide 20 text

3.EC2を1個作ってみよう 基本的な流れ 1.コードを書く(.tfファイル) 2.init(認証情報を読み取る) 3.plan(TESTする) 4.apply(作成する)

Slide 21

Slide 21 text

2.アカウントを紐付けてみよう ◼terraform init ・terraformとアカウントの紐付け ・terraform を初期化する際のコマンド

Slide 22

Slide 22 text

2.アカウントを紐付けてみよう ◼init

Slide 23

Slide 23 text

2.アカウントを紐付けてみよう terraformはカレントディレクトリにある.tfファイルをすべて読む

Slide 24

Slide 24 text

3. EC2を1個作ってみよう 24

Slide 25

Slide 25 text

3.EC2を1個作ってみよう 既存環境に追加でEC2を 1台新規構築してください。 構成図 お客様依頼 新規構築

Slide 26

Slide 26 text

3.EC2を1個作ってみよう インスタンス タイプ AMI EBS VPC/ サブネット セキュリティ グループ t2.micro Linux2 gp2-8G ozaki-kumo- vpc/ ozaki-kumo- public-a ozaki-kumo- sg 構成要件 tags:Name キーペア ozaki-test ozaki-kumo- key

Slide 27

Slide 27 text

3.EC2を1個作ってみよう 基本的な流れ 1.コードを書く(.tfファイル) 2.init(認証情報を読み取る) 3.plan(TESTする) 4.apply(作成する)

Slide 28

Slide 28 text

3.EC2を1個作ってみよう EC2.tf

Slide 29

Slide 29 text

3.EC2を1個作ってみよう 定義したいリソース 一意な名前 resource {引数}

Slide 30

Slide 30 text

3.EC2を1個作ってみよう Terraform 公式ページ

Slide 31

Slide 31 text

3.EC2を1個作ってみよう Terraform 公式ページ 定義したいリソース名 参考例

Slide 32

Slide 32 text

3.EC2を1個作ってみよう Terraform 公式ページ

Slide 33

Slide 33 text

3.EC2を1個作ってみよう 33 Terraform 公式ページのBADな点 ・英語 ・参考例が微妙。。 Terraform 公式ページの使い方 ・リソース名と引数の参照 コードの書き方 ・ググっていろんな人のコードを参考にする ・IMPORT を使う

Slide 34

Slide 34 text

3.EC2を1個作ってみよう 基本的な流れ 1.コードを書く(.tfファイル) 2.init(認証情報を読み取る) 3.plan(TESTする) 4.apply(作成する)

Slide 35

Slide 35 text

3.EC2を1個作ってみよう ◼ terraform plan ・このコードは何が作られるのかがわかる ・実行計画を参照するコマンド ・TEST ・コードが間違っていれば教えてくれる

Slide 36

Slide 36 text

3.EC2を1個作ってみよう terraform plan

Slide 37

Slide 37 text

3.EC2を1個作ってみよう コードをあえて間違ってみる

Slide 38

Slide 38 text

3.EC2を1個作ってみよう ・何が間違っているか大体教えてくれる ・慣れてくれば、何が間違っているかわかる

Slide 39

Slide 39 text

3.EC2を1個作ってみよう 基本的な流れ 1.コードを書く(.tfファイル) 2.init(認証情報を読み取る) 3.plan(TESTする) 4.apply(作成する)

Slide 40

Slide 40 text

3.EC2を1個作ってみよう ◼ terraform apply ・.tf ファイルに記載された情報を元に リソースを作成するコマンド ・リソースが作成されると terraform.tfstate というファイルに、作成されたリソースに関連する 情報が保存されます。 ・2回目以降は差分のみ追加される

Slide 41

Slide 41 text

3.EC2を1個作ってみよう terraform apply

Slide 42

Slide 42 text

3.EC2を1個作ってみよう

Slide 43

Slide 43 text

3.EC2を1個作ってみよう 基本的な流れ 1.コードを書く(.tfファイル) 2.init(認証情報を読み取る) 3.plan(TESTする) 4.apply(作成する)

Slide 44

Slide 44 text

4.作ったものを消してみよう 44

Slide 45

Slide 45 text

4.作ったものを消してみよう ◼ terraform destroy ・リソースを削除する ・terraform.tfstateファイルを元に削除する ・手動で変更している場合は、エラーが起こることもある

Slide 46

Slide 46 text

4.作ったものを消してみよう terraform destroy

Slide 47

Slide 47 text

4. 作ったものを消してみよう

Slide 48

Slide 48 text

5. インポートしてみよう 48

Slide 49

Slide 49 text

5. インポートしてみよう 存在するインスタンスの情報をIMPORTしてみる

Slide 50

Slide 50 text

5. インポートしてみよう terraform import 定義リソース名 一意なリソース名 インポートしたいID(名前) resource 定義リソース名 一意なリソース名 {} terraform.tfstateに記載される

Slide 51

Slide 51 text

5. インポートしてみよう terraform state show 定義リソース名.一意なリソース名

Slide 52

Slide 52 text

5. インポートしてみよう 1.検証環境で実現したいものを手動構築 2.terraform import 3.terraform state show → 丸コピ 私流コードの書き方 4.公式ページなどをみてパラメータを微調整 丸コピ

Slide 53

Slide 53 text

6. 参照してみよう 53

Slide 54

Slide 54 text

6.参照してみよう インスタンス タイプ AMI EBS VPC/ サブネット セキュリティ グループ t2.micro Linux2 gp2-8G ozaki-kumo- vpc/ ozaki-kumo- public-a ozaki-kumo- sg ozaki-kumo- sg2 構成要件 tags:Name キーペア ozaki-test ozaki-kumo- key 新規で作成 tcp:80 0.0.0.0/0

Slide 55

Slide 55 text

6. 参照してみよう resource "aws_security_group" ”kumo_sg" { 別で作成する 参照する resource "aws_instance" ”kumo_ozaki" { vpc_security_group_ids = [ aws_security_group.kumo_sg.id ] SG.tf EC2.tf

Slide 56

Slide 56 text

6. 参照してみよう

Slide 57

Slide 57 text

6. 参照してみよう SecurityGroup.tf

Slide 58

Slide 58 text

6. 参照してみよう EC2.tf

Slide 59

Slide 59 text

7. 変数化してみよう 59

Slide 60

Slide 60 text

7. 変数化してみよう resource “aws_instance” “kumo_ozaki” { instance_type = “t2.micro” } resource “aws_instance” “kumo_ozaki” { instance_type = X } X = t2.micro

Slide 61

Slide 61 text

7. 変数化してみよう resource “aws_instance” “kumo_ozaki” { instance_type = X } X = t2.micro resource “aws_instance” “kumo_ozaki” { instance_type = var.hogehoge } variable “hogehoge” {“t2.micro”}

Slide 62

Slide 62 text

8. モジュール化してみよう 62

Slide 63

Slide 63 text

3.EC2を1個作ってみよう 既存環境に追加でEC2を 3台新規構築してください。 構成図 お客様依頼 新規構築

Slide 64

Slide 64 text

8.モジュール化してみよう インスタンス タイプ AMI EBS VPC/ サブネット セキュリティ グループ t2.micro Linux2 gp2-8G ozaki-kumo- vpc/ ozaki-kumo- public-a ozaki-kumo- sg-test r5.large gp2-10G ozaki-kumo- sg-stg m5.large gp2-50G ozaki-kumo- sg-prod 構成要件 tags:Name キーペア ozaki-test ozaki-kumo- key ozaki-stg ozaki-prod

Slide 65

Slide 65 text

8.モジュール化してみよう スマートじゃない書き方 1つのコード内にリソースを3つ書く test stg prod ・長くてわかりにくい ・環境ごとにapplyできない EC2.tf

Slide 66

Slide 66 text

8.モジュール化してみよう Module化 EC2.tf SG.tf providers.tf 変数化 variable test.module 変数定義 stg.module 変数定義 prod.module 変数定義 tfファイル init plan apply init plan apply init plan apply

Slide 67

Slide 67 text

8.モジュール化してみよう init plan apply

Slide 68

Slide 68 text

8.モジュール化してみよう EC2.tf 構成要件

Slide 69

Slide 69 text

8.モジュール化してみよう SecurityGroup.tf 構成要件

Slide 70

Slide 70 text

8.モジュール化してみよう module.tf

Slide 71

Slide 71 text

8.モジュール化してみよう init plan apply init plan apply init plan apply

Slide 72

Slide 72 text

まとめ ◼ まとめ コードの書き方は、公式・ぐぐる・IMPORT Terraformの基本 init→plan→apply 参照・変数を使いましょう 環境が複数の場合はモデュール化しましょう

Slide 73

Slide 73 text

おわり 73

Slide 74

Slide 74 text

9. 質疑応答 74

Slide 75

Slide 75 text

中途向け会社説明会 75 「アイレットってどんな会社?」「cloudpackって具体的にどんな事業なの?」 「オフィス環境は?」「これまでの経験を活かせそう?」など、 少しでも興味がある方は、ぜひお気軽にご参加ください。

Slide 76

Slide 76 text

No content