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
540
今日から使える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
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
108
19k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Making Projects Easy
brettharned
116
6.3k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
282
13k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
Site-Speed That Sticks
csswizardry
10
710
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
980
Measuring & Analyzing Core Web Vitals
bluesmoon
7
520
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
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