Slide 1

Slide 1 text

©2022 TC3株式会社 www. tc3.co.jp ©2022 TC3株式会社 Terraform勉強会 2022/07/01

Slide 2

Slide 2 text

©2022 TC3株式会社 www. tc3.co.jp ● Terraformって何? ● Terraform実行の流れ ● TerraformCLI agenda

Slide 3

Slide 3 text

©2022 TC3株式会社 www. tc3.co.jp ● Terraformって何? ● ただなの? ● Cloudformationと何が違うの? ● 前提知識は? ● どうやって勉強すると早いの? ● ローカルPCに何か入れるの? Terraformって何?

Slide 4

Slide 4 text

©2022 TC3株式会社 www. tc3.co.jp ● いわゆるIacツール ● ネットワーク上にある様々なリソースをコードで作成/管理できる ○ クラウドサービス各種(AWS,GCP,Azure) ○ SaaS(Auth0,Okta,Githubなど) ■ ただしクラウドサービスと比べると機能が少ない場合あり Terraformって何? Terraformって何?

Slide 5

Slide 5 text

©2022 TC3株式会社 www. tc3.co.jp Terraformって何? Terraformって何?(例) resource “auth0_client” “myapp”{ … } resource “aws_secretsmanager_secret” “auth0” { secure_string = <<-EOF { client_id = auth0_client.myapp.client_id … } } 作成 パラメーター返却 (client_id, client_secret, …) 作成 パラメーター返却 (arn) 更にarn情報をecs_taskに紐づけることも可能

Slide 6

Slide 6 text

©2022 TC3株式会社 www. tc3.co.jp ● CLI版は無料 ○ いつも利用してるのはこっち ● CLoud版は有料 ○ IDE ○ stateやsecretの管理ができたり、CI/CDを簡単に組んだりできるらしい Terraformって何? ただなの?

Slide 7

Slide 7 text

©2022 TC3株式会社 www. tc3.co.jp ● Cloudformation ○ よいところ ■ AWSのサービスとの連携が豊富(SAM,StackSets等) ■ AWSサポートに対応 ○ わるいところ ■ yaml ■ 抽象化できない(設定値を全部かく必要がある) ■ AWSのみ対応 Terraformって何? Cloudformationと何が違うの?

Slide 8

Slide 8 text

©2022 TC3株式会社 www. tc3.co.jp ● Terraform ○ よいところ ■ マルチプロバイダ対応 ■ コードの抽象化が可能 ○ わるいところ ■ これといったベストプラクティスがない ■ 未対応のリソースがある Terraformって何? Cloudformationと何が違うの?

Slide 9

Slide 9 text

©2022 TC3株式会社 www. tc3.co.jp ● Must ○ 代表的なサービス名とそれが何をするためのものかがわかる ■ サーバーを建てたい -> EC2 などがわかればOK ● Want ○ サービスの依存関係 ■ 知らなくてもなんとかなる。エラーになるのでそこから調べればよい ● Needn’t ○ 各サービスの細かいパラメータ(docをみればわかる) Terraformって何? 前提知識は?

Slide 10

Slide 10 text

©2022 TC3株式会社 www. tc3.co.jp ● 実践で学ぶ ○ GUIでのリソース生成を今すぐにやめる ○ Iacを徹底するならGUIは禁止(仮に検証だとしても) ○ terraform <サービス名> でぐぐったら大抵ヒットする ● Udemy(構文とかまとまってるけど有料) ○ 超Terraform完全入門 https://www.udemy.com/course/hashicorp-terraform-aws-devops-iac/ ● certificateもあるみたいなので公式トレーニング的なのもあるかも Terraformって何? どうやって勉強すると早いの?

Slide 11

Slide 11 text

©2022 TC3株式会社 www. tc3.co.jp ● AWSCLI (Profileの作成・管理に必要) ● tfenv (pyenv的なアレ) ● Terraform インストール方法など https://qiita.com/sasshi_i/items/b5117d51fed800fa6b09 Terraformって何? ローカルPCに何か入れるの?

Slide 12

Slide 12 text

©2022 TC3株式会社 www. tc3.co.jp 1. 作成したいリソースを検索 https://registry.terraform.io/providers/hashicorp/aws/latest/docs 2. コーディング 3. terraform init 4. terraform plan 5. terraform apply 6. terraform destroy Terraform実行の流れ

Slide 13

Slide 13 text

©2022 TC3株式会社 www. tc3.co.jp https://registry.terraform.io/providers/hashicorp/aws/latest/docs Terraform実行の流れ 1. 作成したいリソースを検索

Slide 14

Slide 14 text

©2022 TC3株式会社 www. tc3.co.jp Terraform実行の流れ 2. コーディング

Slide 15

Slide 15 text

©2022 TC3株式会社 www. tc3.co.jp Terraform実行の流れ 2. コーディング docsから作成したリソース名を調べて入力 terraform上の識別子(任 意の名前) リソースのパラメーター (これもdocs参照) つまり我々にできることは docsを見ることだけ・・!

Slide 16

Slide 16 text

©2022 TC3株式会社 www. tc3.co.jp Terraform実行の流れ 3. terraform init

Slide 17

Slide 17 text

©2022 TC3株式会社 www. tc3.co.jp Terraform実行の流れ 4. terraform plan 指定しなかったパラメータはデフォルトの値が 入力される(Optionalと書いてある箇所は省略 可能)

Slide 18

Slide 18 text

©2022 TC3株式会社 www. tc3.co.jp 追加、変更、削除の内訳が表示される。 意図していないものが無いかどうか要チェック! Terraform実行の流れ 4. terraform plan

Slide 19

Slide 19 text

©2022 TC3株式会社 www. tc3.co.jp 最終確認にyesと入力すると処理が開始する Terraform実行の流れ 5. terraform apply

Slide 20

Slide 20 text

©2022 TC3株式会社 www. tc3.co.jp AWSコンソールから作成されていることを確認 Terraform実行の流れ 5. terraform apply

Slide 21

Slide 21 text

©2022 TC3株式会社 www. tc3.co.jp 利用料もかかるので満足したら削除しよう Terraform実行の流れ 6. terraform destroy

Slide 22

Slide 22 text

©2022 TC3株式会社 www. tc3.co.jp StatusがTerminatedになっていることを確認 Terraform実行の流れ 6. terraform destroy

Slide 23

Slide 23 text

©2022 TC3株式会社 www. tc3.co.jp ● terraform console ● terraform fmt ● terraform graph ● terraform import ● terraform output ● terraform workspace TerraformCLI 便利コマンド

Slide 24

Slide 24 text

©2022 TC3株式会社 www. tc3.co.jp 関数のテストやresourceの内容の確認に使える TerraformCLI terraform console

Slide 25

Slide 25 text

©2022 TC3株式会社 www. tc3.co.jp 汚いコードがきれいに TerraformCLI terraform fmt

Slide 26

Slide 26 text

©2022 TC3株式会社 www. tc3.co.jp vscodeならextensionを導入すると自動補完可能 settings.json TerraformCLI terraform fmt

Slide 27

Slide 27 text

©2022 TC3株式会社 www. tc3.co.jp resource間の依存関係を表示できる(これはpngで出力してみた結果) なるほどわからん TerraformCLI terraform graph

Slide 28

Slide 28 text

©2022 TC3株式会社 www. tc3.co.jp 作成済のリソースをterrafrom管理下における 1. 適当なバケットを作成 2. 空のリソースを作成 TerraformCLI terraform import

Slide 29

Slide 29 text

©2022 TC3株式会社 www. tc3.co.jp 4. state list & show -> main.tfに内容をコピーして管理下に。 TerraformCLI terraform import 3. import -> stateがインポートされる

Slide 30

Slide 30 text

©2022 TC3株式会社 www. tc3.co.jp https://www.terraform.io/language/state https://www.terraform.io/language/state/remote TerraformCLI terraform import

Slide 31

Slide 31 text

©2022 TC3株式会社 www. tc3.co.jp TerraformCLI terraform output リソース内の値を取得できる

Slide 32

Slide 32 text

©2022 TC3株式会社 www. tc3.co.jp TerraformCLI terraform workspace ワークスペースを切り替えることで環境を分けることができる