Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Terraform 101 (初心者向け) 資料

Terraform 101 (初心者向け) 資料

Avatar for Shu Adachi

Shu Adachi

June 29, 2026

More Decks by Shu Adachi

Other Decks in Technology

Transcript

  1. Customer Success / © 2026 IBM Corporation 2 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  2. Customer Success / © 2026 IBM Corporation 3 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  3. Customer Success / © 2026 IBM Corporation 4 自己紹介 日本アイ・ビー・エム株式会社

    テクノロジー事業本部 Customer Success Manager 足立 嵩(あだち しゅう) 5年弱 SIerにて製造業のお客様のアカウント SEを経験した後、2021年にIBMのCSMに興 味を持ち転職 趣味は息子と遊ぶこと、ゴルフ Twitter、LinkedInのQRコードを貼ってます のでよければフォロー・繋がり申請お願い します! Twitter(@LgmQue) LinkedIn(@shuadachi)
  4. © 2026 IBM Corporation 自己紹介 川口 直之 Naoyuki Kawaguchi IBM/HashiCorp

    Customer Success Engineer カスタマーサクセスとしてマルチクラウド推進・IaC普 及によるインフラ標準化と顧客成功の支援。
  5. Customer Success / © 2026 IBM Corporation 6 本イベントについて 最近Terraformを使い始めた方、興味のある方を対象としたウェビナーで

    す。 質問はTeamsのチャット欄に入力ください。 セッション中もしくは、最後の時間で回答いたします。 なお、サポート案件やバグ修正に関する問題については、回答できません。 あらかじめご了承ください。
  6. Customer Success / © 2026 IBM Corporation 7 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  7. Customer Success / © 2026 IBM Corporation 9 IaCとは? サーバーやネットワークなどのITインフラ構成を

    手作業ではなくコードで定義・管理する考え方 人が各社クラウドの 管理コンソールで 構築作業を実施 従来の構築 サーバー, DB, NW, セキュリティ設定などが クラウド上に構築/設定される
  8. Customer Success / © 2026 IBM Corporation 10 IaCとは? サーバーやネットワークなどのITインフラ構成を

    手作業ではなくコードで定義・管理する考え方 人が各社クラウドの 管理コンソールで 構築作業を実施 従来の構築 サーバー, DB, NW, セキュリティ設定などが クラウド上に構築/設定される 手作業の構築をコードに置き換える
  9. Customer Success / © 2026 IBM Corporation 11 IaCとは? サーバーやネットワークなどのITインフラ構成を

    手作業ではなくコードで定義・管理する考え方 人が各社クラウドの 管理コンソールで 構築作業を実施 IaCツールがコードを読み取り リソースを作成 従来の構築 サーバー, DB, NW, セキュリティ設定などが クラウド上に構築/設定される 作りたい構成(あるべき姿) を コードで表現 IaCによる構築 手作業の構築をコードに置き換える
  10. Customer Success / © 2026 IBM Corporation 12 IaCのメリット VCS(バージョン管理システム)と

    組み合わせることで インフラの変更履歴を 記録することができる
  11. Customer Success / © 2026 IBM Corporation 13 IaCのメリット VCS(バージョン管理システム)と

    組み合わせることで インフラの変更履歴を 記録することができる 誰でも同じ手順を自動実行でき 素早く構築できる
  12. Customer Success / © 2026 IBM Corporation 14 IaCのメリット VCS(バージョン管理システム)と

    組み合わせることで インフラの変更履歴を 記録することができる 同じ環境を何度でも再現できる 誰でも同じ手順を自動実行でき 素早く構築できる
  13. Customer Success / © 2026 IBM Corporation 15 IaCのメリット VCS(バージョン管理システム)と

    組み合わせることで インフラの変更履歴を 記録することができる 同じ環境を何度でも再現できる 誰でも同じ手順を自動実行でき 素早く構築できる 便利な反面、注意点もあります→
  14. Customer Success / © 2026 IBM Corporation 17 IaCの注意点 最初にコードの書き方や

    ツールの使い方を 覚える必要がある コードの継続的な メンテナンスが必要になる
  15. Customer Success / © 2026 IBM Corporation 18 IaCの注意点 最初にコードの書き方や

    ツールの使い方を 覚える必要がある 間違ったコードでも そのまま反映される コードの継続的な メンテナンスが必要になる
  16. Customer Success / © 2026 IBM Corporation 19 IaCの注意点 最初にコードの書き方や

    ツールの使い方を 覚える必要がある 間違ったコードでも そのまま反映される コードの継続的な メンテナンスが必要になる ただし・・・ 正しくツールを活用することで、対策も可能です!
  17. Customer Success / © 2026 IBM Corporation 20 代表的なIaC関連ツール •

    Terraform (HashiCorp) → 様々なクラウド環境をコードで作成・管理する代表的なツール • Ansible (RedHat) → サーバーの設定作業やソフトウェア導入を自動化するツール • CloudFormation (AWS) • Bicep (Azure) • Deployment Manager/Infrastructure Manager (GCP) → 各社のクラウド環境をコードで管理するツール ※TerraformとAnsibleはIBMの製品ポートフォリオに含まれています
  18. Customer Success / © 2026 IBM Corporation 21 代表的なIaC関連ツール •

    Terraform (HashiCorp) ★本日取り扱うIaCツール → 様々なクラウド環境をコードで作成・管理する代表的なツール • Ansible (RedHat) → サーバーの設定作業やソフトウェア導入を自動化するツール • CloudFormation (AWS) • Bicep (Azure) • Deployment Manager/Infrastructure Manager (GCP) → 各社のクラウド環境をコードで管理するツール ※TerraformとAnsibleはIBMの製品ポートフォリオに含まれています
  19. Customer Success / © 2026 IBM Corporation 22 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  20. Customer Success / © 2026 IBM Corporation 23 Terraformとは? クラウド環境で一番利用されている

    Infrastructure as Code ツール! AWS や Google Cloud 環境において、それぞれのクラウドベンダーが提 供するネイティブな IaC ツールである CloudFormation や Deployment Manager よりも Terraform は採用が多く、クラウドの IaC としては現在 デファクトスタンダートの位置付け。 Datadog: STATE OF DevSecOps
  21. Customer Success / © 2026 IBM Corporation 24 Terraform と

    Ansibleの違い 運用作業の自動化 VPC サーバー セキュリティ・グループ DB ロードバランサー OS設定 パッケージ導入 ミドルウェア設定 アプリ配置
  22. Customer Success / © 2026 IBM Corporation 25 Terraform と

    Ansibleの違い 運用作業の自動化 VPC サーバー セキュリティ・グループ DB ロードバランサー OS設定 パッケージ導入 ミドルウェア設定 アプリ配置
  23. Customer Success / © 2026 IBM Corporation 26 Terraform と

    Ansibleの違い Terraform インフラの土台を作るのが得意 Ansible サーバーやアプリの設定が得意 運用作業の自動化 VPC サーバー セキュリティ・グループ DB ロードバランサー OS設定 パッケージ導入 ミドルウェア設定 アプリ配置
  24. Customer Success / © 2026 IBM Corporation 27 Terraformライセンス(無償/有償)の違い Terraformの無償版はコマンド(CLI)として提供され、個人で利用する狭義のIaCが実行できます。

    有償版では、チーム運用を想定した統合運用管理ポータルが提供され、業務で利用するために必要な IaCの運用管理機能が利用できます。
  25. Customer Success / © 2026 IBM Corporation 28 Terraformライセンス(無償/有償)の違い Terraformの無償版はコマンド(CLI)として提供され、個人で利用する狭義のIaCが実行できます。

    有償版では、チーム運用を想定した統合運用管理ポータルが提供され、業務で利用するために必要な IaCの運用管理機能が利用できます。 有償版(Enterprise)のメリット ・チームでの実行管理 ・RBACによる権限管理 ・VCS連携による自動実行 ・ポリシー適用によるガバナンス ・監査ログによる変更履歴の確認
  26. Customer Success / © 2026 IBM Corporation 29 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  27. Customer Success / © 2026 IBM Corporation 30 Terraformコードを読んでみる Terraformでは

    .tf という拡張子のファイルに HCL(Hashicorp Configuration Language) という専用の言語を使って 「どのクラウドに」「どんなリソースを」「どの設定で作るか」 という形で書いていきます。
  28. Customer Success / © 2026 IBM Corporation 31 Terraformコードを読んでみる Terraformでは

    .tf という拡張子のファイルに HCL(Hashicorp Configuration Language) という専用の言語を使って 「どのクラウドに」「どんなリソースを」「どの設定で作るか」 という形で書いていきます。 本日はHashiCorpDeveloperで公開されているサンプルコードで進めます。 https://developer.hashicorp.com/terraform/tutorials/aws-get-started/aws-create
  29. Customer Success / © 2026 IBM Corporation 32 Terraformはどうやってクラウドを操作するか? Cloud

    A provider Cloud B provider Cloud C provider Cloud A Cloud B Cloud C HCLでコード記述 Providerが 各クラウドのAPIを呼び出す Terraformはクラウドを直接操作するのではなく、 Provider という接続部品を通じて、各クラウドやサービスのAPIを呼び出し操作します。
  30. Customer Success / © 2026 IBM Corporation 33 Providerは誰が提供しているの? Terraform

    Registryには、HashiCorp / パートナー / コミュニティなどが公開している ProviderやModuleが登録されています。 Terraform Registry (部品カタログ) • Provider Terraformからクラウドやサー ビスのAPIを操作するための接 続部品 • Module Terraformコードをまとめて再 利用するための部品 公式 / パートナー / コミュニティ Provider/Moduleを Registryに公開
  31. Customer Success / © 2026 IBM Corporation 34 Providerは誰が提供しているの? Terraform

    Registryには、HashiCorp / パートナー / コミュニティなどが公開している ProviderやModuleが登録されています。 利用者はRegistryから必要なProviderやModuleを取得することで、AWS / Azure / Google Cloudだけでなく、IBM Cloud、VMware、Kubernetes、SaaSなど幅広い環境をTerraformか ら操作できます。 Terraform Registry (部品カタログ) • Provider Terraformからクラウドやサー ビスのAPIを操作するための接 続部品 • Module Terraformコードをまとめて再 利用するための部品 公式 / パートナー / コミュニティ 利用者 Provider/Moduleを Registryに公開 必要な部品を Registryから取得
  32. Customer Success / © 2026 IBM Corporation 35 Terraformの基本的な書き方 Terraform

    は block に定義を記載します。 block にはいくつかの type があります。 一例として、 • terraform block • provider block • resource block などがあります。 terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.92" } } required_version = ">= 1.2" } このコード例はterraform blockです (block = {}で括られている単位)
  33. Customer Success / © 2026 IBM Corporation 36 AWS上にUbuntuのEC2インスタンスを1台作るコードを読んでみる terraform.tf

    main.tf terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.92" } } required_version = ">= 1.2" } provider "aws" { region = "us-west-2" } data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*"] } owners = ["099720109477"] # Ubuntu公式のAMIだけを検索対象にする } resource "aws_instance" "app_server" { ami = data.aws_ami.ubuntu.id instance_type = "t2.micro" tags = { Name = "learn-terraform" } } どのクラウドに どんなリソースを どの設定で作るか 使用するProviderと バージョンを指定する 実行すると:AWSの us-west-2 に、UbuntuのAMIを使った t2.micro のEC2インスタンスを1台作成できる
  34. Customer Success / © 2026 IBM Corporation 37 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  35. Customer Success / © 2026 IBM Corporation 38 Terraform実行のステップ 1.

    環境構築 Terraformを実行環境(ご自身のPC等)にインストールする 2. Write リソースをコードに定義する 3. Init ( terraform init ) 作業ディレクトリの初期化、providerのインストール 4. Plan ( terraform plan ) 作成・変更・削除される予定のリソースを確認する 5. Apply ( terraform apply ) Planで確認した内容を実際の環境に反映 6. Destroy (terraform destroy ) 作成したリソースを削除する 参考:https://developer.hashicorp.com/terraform/install
  36. Customer Success / © 2026 IBM Corporation 39 Terraform実行のステップ 1.

    環境構築 Terraformを実行環境(ご自身のPC等)にインストールする 2. Write リソースをコードに定義する 3. Init ( terraform init ) 作業ディレクトリの初期化、providerのインストール 4. Plan ( terraform plan ) 作成・変更・削除される予定のリソースを確認する 5. Apply ( terraform apply ) Planで確認した内容を実際の環境に反映 6. Destroy (terraform destroy ) 作成したリソースを削除する 本日はこの部分をデモでお見せします 参考:https://developer.hashicorp.com/terraform/install
  37. Customer Success / © 2026 IBM Corporation 41 Write terraform.tf

    terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.92" } } required_version = ">= 1.2" } main.tf provider "aws" { region = "ap-northeast-1" access_key = "・・・" secret_key = "・・・" } data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*"] } owners = ["099720109477"] # Ubuntu公式のAMIだけを検索対象にする } resource "aws_instance" "app_server" { ami = data.aws_ami.ubuntu.id instance_type = "t3.micro" tags = { Name = "learn-terraform" } } リージョンを 東京に変更 インスタンス タイプを変更
  38. Customer Success / © 2026 IBM Corporation 42 Init %

    terraform init Initializing the backend... Initializing provider plugins... - Finding hashicorp/aws versions matching "~> 5.92"... - Installing hashicorp/aws v5.100.0... - Installed hashicorp/aws v5.100.0 (signed by HashiCorp) Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
  39. Customer Success / © 2026 IBM Corporation 43 Plan %

    terraform plan data.aws_ami.ubuntu: Reading... data.aws_ami.ubuntu: Read complete after 1s [id=ami-05f4eb3328c0dabc5] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_instance.app_server will be created + resource "aws_instance" "app_server" { + ami = "ami-05f4eb3328c0dabc5" + arn = (known after apply) + associate_public_ip_address = (known after apply) (省略) + vpc_security_group_ids = (known after apply) } Plan: 1 to add, 0 to change, 0 to destroy. ─────────────────────────────────────────────────────────────────── Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now. 作成されるリソース のリスト 作成されるリソース のサマリー 今回は1つだけ作成
  40. Customer Success / © 2026 IBM Corporation 44 Apply %

    terraform apply data.aws_ami.ubuntu: Reading... data.aws_ami.ubuntu: Read complete after 0s [id=ami-05f4eb3328c0dabc5] Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_instance.app_server will be created + resource "aws_instance" "app_server" { + ami = "ami-05f4eb3328c0dabc5” (省略) + vpc_security_group_ids = (known after apply) } Plan: 1 to add, 0 to change, 0 to destroy. 右に続く→ Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes aws_instance.app_server: Creating... aws_instance.app_server: Still creating... [10s elapsed] aws_instance.app_server: Creation complete after 13s [id=i-064d85174360cf0 Apply complete! Resources: 1 added, 0 changed, 0 destroyed. 成功するとApply complete!の表示が出 ます 実行確認が入るので yesと回答
  41. Customer Success / © 2026 IBM Corporation 46 次のステップ Terraformの公式や、さまざまなクラウドプロバイダからチュートリアル

    が提供されていますので、始めてみましょう! Terraformチュートリアル https://developer.hashicorp.com/terraform/tutorials
  42. Customer Success / © 2026 IBM Corporation 47 アジェンダ 時間

    内容 14:00-14:05 オープニング 14:05-14:15 IaCとは? 14:15-14:25 Terraformとは? 14:25-14:35 Terraformコードを読んでみる 14:35-14:50 基本コマンドの流れ 14:50-15:00 QA・クロージング
  43. Customer Success / © 2026 IBM Corporation 48 さいごに 日本アイ・ビー・エム株式会社

    テクノロジー事業本部 Customer Success Manager 足立 嵩(あだち しゅう) 本日はご参加いただきありがとうございました! Terraformの利用イメージはつかめましたか? まずは身近なリソースをIaC化してみましょう! ぜひ本日の感想や次回以降のセッションへのご要望 をアンケートにご記入ください! Twitter(@LgmQue) LinkedIn(@shuadachi)