Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
今日から使えるTerraform 〜初心者向けIaC実践ガイド〜
Search
Yuuuuuuu
July 19, 2025
3
550
今日から使えるTerraform 〜初心者向けIaC実践ガイド〜
JAWS-UG初心者支部#66 hands-on
https://jawsug-bgnr.connpass.com/event/360104/
2025/07/21(月)
Yuuuuuuu
July 19, 2025
Tweet
Share
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
RailsConf 2023
tenderlove
30
1.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
840
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Designing for Performance
lara
610
69k
How GitHub (no longer) Works
holman
314
140k
Six Lessons from altMBA
skipperchong
28
3.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Transcript
今日から使えるTerraform 〜初心者向けIaC実践ガイド〜 JAWS-UG初心者支部#66 hands-on Yuuuuuuu (@ec2_on_aws) ツイートはこちら⇒#jawsug_bgnr
自己紹介 ◼所属:とあるSIerの運用系グループ会社 ◼AWS歴:7年目、、、ただし、3-4年はEC2/VPC/S3くらいしか触らず ちゃんとAWSを使い始めたのは2-3年前くらい ◼趣味:酒(ウイスキー、日本酒)、ホロライブ(お嬢、ミオしゃ、フブキ) ◼好きなAWSサービス:Amazon EKS、Amazon Q、Terraform(AWS?) ◼AWSな活動:Japan All
AWS Certifications Engineers(2024-2025) ◼取得資格:Terraform Associate、AWS 15個、AZ-900、OCI 2個 他 Twitter Qiita 初登壇 ツイートはこちら⇒#jawsug_bgnr
Agenda ◼IaCがない世界 ◼IaCとは/IaCがあることでうれしいこと ◼Terraformとは ◼HCL(Terraform) の書き方 ◼Terraformの実行の仕方 at AWS ◼応用編
◼まとめ ◼参考 ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! EC2(サーバ)をAWSで作成することを考えてみましょう ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! EC2(サーバ)をAWSで作成することを考えてみましょう 1. マネジメントコンソール(以下、マネコン)にログイン ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! EC2(サーバ)をAWSで作成することを考えてみましょう 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! EC2(サーバ)をAWSで作成することを考えてみましょう 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…
ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! EC2(サーバ)をAWSで作成することを考えてみましょう 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…
5. 「インスタンスを起動」 ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! EC2(サーバ)をAWSで作成することを考えてみましょう 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…
5. 「インスタンスを起動」 6. できた!!! ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! では、複数台EC2(サーバ)をAWSで作成することを考えてみると?? 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…
5. 「インスタンスを起動」 6. できた!!! ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! では、複数台EC2(サーバ)をAWSで作成することを考えてみると?? 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…
5. 「インスタンスを起動」 6. できた!!! 最低限ここを 複数回実行する 必要がある ツイートはこちら⇒#jawsug_bgnr
突然ですが!!! では、複数台EC2(サーバ)をAWSで作成することを考えてみると?? 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…
5. 「インスタンスを起動」 6. できた!!! 最低限ここを 複数回実行する 必要がある 100台、1000台 間違わずに 作成できますか? ツイートはこちら⇒#jawsug_bgnr
そこで活用できるのが IaC ツイートはこちら⇒#jawsug_bgnr
IaCとは ◼Infrastructure as Code(インフラストラクチャ アズ コード)の略 ◼インフラをコードで管理する手法 ◼従来の方法 ◼マネジメントコンソールで手作業 ◼設定手順書を見ながら一つずつ作業
◼IaCの方法 ◼インフラ構成をコードで記述 ◼コードを実行して自動でインフラを構築 ◼同じコードで何度でも同じ環境を作成可能 https://aws.amazon.com/jp/what-is/iac/ ツイートはこちら⇒#jawsug_bgnr
IaCがあることでうれしいこと ◼同じ構成の複製が簡単(再現性、スケーラビリティ) ◼繰り返し処理(for文)や、開発/本番環境の横展開 ◼同じコードを使いまわせるため、設定ミスが削減 ◼コード仕様の変更が少ない ◼某Az〇reは、朝と昼と夜でマネコンの表示が違うことも(´;ω;`) ◼IaCの場合、マネコンに比べると圧倒的(当社比)に変更が少ない ◼生成AIを活用できる ◼マネコンの場合、AIの指示で作成してくれも押すべきボタンがないことも ◼IaCの場合、指示すればコードを生成してくれる
◼クラウドのベストプラクティスの準拠やセキュリティレビューもしてくれる https://aws.amazon.com/jp/what-is/iac/ ツイートはこちら⇒#jawsug_bgnr
IaCの例 ◼AWS ◼AWS CDK(Cloud Development Kit) ◼AWS CloudFormation ◼Azure ◼Azure
Resource Manager Template(ARM) ◼Google Cloud ◼Infrastructure Manager(Infra Manager) ◼その他 ◼Terraform ← 今回のメインはこれ ◼Puppet/Chef ◼Ansible https://aws.amazon.com/jp/what-is/iac/ ツイートはこちら⇒#jawsug_bgnr
Terraformとは ◼HashiCorp社が提供するIaCツール ◼AWS/Azure/Google Cloud/OCIなどのパブクラやKubernetes、DataDog、 VMwareなど幅広いサービスに対応 ◼一つのコードの中で、AWS/Azure両方にリソースを作成することも可能 ◼HCL(Hashicorp Configuration Language)という独自言語で記述 ◼
こうあってほしい/こういうリソースを作成したいという理想を記述(宣言的) ツイートはこちら⇒#jawsug_bgnr
おまけ ◼6/25-26のAWS Summitでは、以下のSWAG(お土産)がもらえました ◼箸と(折り畳み)コップ、Tシャツ ◼なんで箸とコップなんでしょうね… ツイートはこちら⇒#jawsug_bgnr
HCL(Terraformコード) の書き方 (Amazon S3バケットを1つ作成) ツイートはこちら⇒#jawsug_bgnr
HCL(Terraformコード) の書き方 (Amazon S3バケットを1つ作成) ツイートはこちら⇒#jawsug_bgnr Terraformブロック Terraform全体の設定を記述 バージョン指定もこちら AWSやAzure、Vmwareなど 何(Provider)に対して実行するか
今回はAWSに対してリソースを 作成したいので、AWS Providerを指定 Provider ブロック 認証情報やリージョンなど Resourceブロック そのTerraformコードでどんな リソースを作成するか
HCL(Terraformコード) の書き方 (Amazon S3バケットを1つ作成) ツイートはこちら⇒#jawsug_bgnr Resourceブロック そのTerraformコードでどんな リソースを作成するか 左記の例だと “aws_s3_bucket”:リソースタイプ
どんなリソースを作成するか “beginner-bucket-20250721”:リソース名 そのterraformコード内でそのリソース を一意に識別するための名前 AWSの中の名前ではない点に注意 bucket = “beginner-bucket-20250721” そのリソースタイプで指定された変数 リソースタイプによって、 必須/オプションが存在
Terraformの主な要素 ◼Terraformコードファイル(main.tf) ◼HCLで記述した、こうあってほしい(宣言的)というリソースの状態を記載 ◼Stateファイル(terraform.tfstate) ◼現在のインフラの状態を記録するファイル ◼Terraformが「現在の状態」と「あるべき状態(コード)」を比較するために使用 ◼どのリソースがTerraformで管理されているかを把握 ◼注意:パスワードなどのSensitiveデータも平文で保管されるため、取扱注意 Terraformコード (あるべき状態)
Stateファイル (前回実行時の状態) 実際のAWSリソース (現在の状態) 比較 比較 ツイートはこちら⇒#jawsug_bgnr
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy ツイートはこちら⇒#jawsug_bgnr
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy 【推奨】Identity Centerの認証トークン 【非推奨】アクセスキー/シークレットアクセスキー 詳細は以下を参照 https://qiita.com/Hikosaburou/items/1d3765d85d5398e3763f ツイートはこちら⇒#jawsug_bgnr
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy AWSの場合、以下のTerraform registryを参照 https://registry.terraform.io/providers/hashicorp/aws/latest/docs ツイートはこちら⇒#jawsug_bgnr
Terraform registryとは ◼Terraformのリソースブロックの記載方法を検索できる公式サイト ◼各クラウドプロバイダーに応じたリソースの書き方が分かる ◼AWS:https://registry.terraform.io/providers/hashicorp/aws/latest ◼Azure:https://registry.terraform.io/providers/hashicorp/azurerm/latest ◼GCP:https://registry.terraform.io/providers/hashicorp/google/latest ◼それぞれのリソースで設定できる変数や、コピペで使えるサンプル コードが豊富 ツイートはこちら⇒#jawsug_bgnr
Terraform registryの使い方 at s3_bucket編 ツイートはこちら⇒#jawsug_bgnr ①“S3”と検索 ②作成したい リソースタイプ を探す https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/s3_bucket
③Exampleコード をコピー! ④追加変数は 下の方に記載あり
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy ディレクトリの初期化 プロバイダーファイルをダウンロード ツイートはこちら⇒#jawsug_bgnr
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy 実行は(実は)オプション ただし実行は強く推奨 Terraformコードを実行するとどうなるか、 想定結果を表示(Dry run) ツイートはこちら⇒#jawsug_bgnr
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy 記載内容通りにリソースを作成/変更 作成リソースに応じて、コストが発生 新規作成(create)、設定変更(update)、置換(replace)、 削除(destroy)の4パターンの状態変更が存在 実行時の状態を保存するため、Stateファイルを作成/更新 ツイートはこちら⇒#jawsug_bgnr
Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init
4. terraform plan 5. terraform apply 6. terraform destroy terraformコードのリソースを削除 削除は取り消せないため、必ずそのリソースを 削除してよいかを確認してから実行すること ツイートはこちら⇒#jawsug_bgnr
応用編 ◼HCLの記述 ◼dataブロック ◼ 既存のリソース(IAMロールやVPC)を、Terraform内で管理対象とはせず、利用可能にする ◼Importブロック ◼ 既存のリソース(IAMロールやVPC)を、Terraform内で管理対象に追加し、利用可能にする ◼Stateファイルの管理 ◼本資料では、ローカル(実行ディレクトリ)にてStateファイルを保管
◼複数人で実行する場合は、リモート(S3やHCP Terraformなど)で保管 ◼コマンド ◼terraform fmt ◼ Terraformの推奨構文に即して、インデント(空白)や改行などをきれいに整理 ◼terraform validate ◼ HCLの文法が正しいかチェック ツイートはこちら⇒#jawsug_bgnr
コマンドの実行例(terraform init) ツイートはこちら⇒#jawsug_bgnr 指定されたAWSプロバイダーを インストール .terraform.lock.hclで プロバイダーのバージョンを固定
コマンドの実行例(terraform plan) ツイートはこちら⇒#jawsug_bgnr リソースの指定できる項目がリスト Terraformコードで指定していなかった 値もデフォルト値で設定 このコードを実行することで新規/変更 /削除のどの操作がいくつ行われるか リソースの指定できる項目がリスト Terraformコードで指定していなかった
値もデフォルト値で設定
コマンドの実行例(terraform apply その1) ツイートはこちら⇒#jawsug_bgnr 略 terraform planと同様に どういう操作が行われるか この操作を実行してよいか yes:実行開始
それ以外:実行禁止(実行が強制終了)
コマンドの実行例(terraform apply その2) ツイートはこちら⇒#jawsug_bgnr リソースがどの順で作成されて いるか、トレース
まとめ ◼Terraform はIaCの一つ ◼AWSをはじめとしたパブリッククラウドや、Kuberetes、Vmwareなど 幅広いサービスで利用可能 ◼TerraformはHCLという独自言語で宣言的に記載 ◼Terraformの状態はStateファイルで保持される ◼Terraformの実行は以下の流れ 1. terraform
init 2. terraform plan 3. terraform apply 4. terraform destroy ツイートはこちら⇒#jawsug_bgnr
参考 ◼参考書 ◼[詳解]AWS Infrastructure as Code――使って比べるTerraform&AWS CDK エンジ ニア選書 https://amzn.asia/d/9wKEawZ
◼詳解 Terraform 第3版 ―Infrastructure as Codeを実現する https://amzn.asia/d/ewUrE1g ◼Terraformの教科書 (Compass Booksシリーズ) https://amzn.asia/d/jaNauti ◼Terraformではじめる実践IaC ―AWSでのインフラストラクチャ構築の基本から継続的 デプロイまで 7/26発売 https://amzn.asia/d/dQ8fzJ4 ◼資格(2025.7時点で英語のみ) ◼Terraform Associate(003) https://qiita.com/ec2_on_aws/items/51761c24f2c3e87e36c4 ◼Terraform Authoring and Operations Professional https://developer.hashicorp.com/terraform/tutorials/pro-cert
ご覧いただき ありがとうございました Thank you for watching! ツイートはこちら⇒#jawsug_bgnr