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

今日から使えるTerraform 〜初心者向けIaC実践ガイド〜

Avatar for Yuuuuuuu Yuuuuuuu
July 19, 2025
770

今日から使えるTerraform 〜初心者向けIaC実践ガイド〜

JAWS-UG初心者支部#66 hands-on
https://jawsug-bgnr.connpass.com/event/360104/
2025/07/21(月)

Avatar for Yuuuuuuu

Yuuuuuuu

July 19, 2025

Transcript

  1. 突然ですが!!! では、複数台EC2(サーバ)をAWSで作成することを考えてみると?? 1. マネコンにログイン 2. EC2画面にアクセス 3. 「インスタンスを起動」 4. 設定をごにょごにょ…

    5. 「インスタンスを起動」 6. できた!!! 最低限ここを 複数回実行する 必要がある 100台、1000台 間違わずに 作成できますか? ツイートはこちら⇒#jawsug_bgnr
  2. IaCとは ◼Infrastructure as Code(インフラストラクチャ アズ コード)の略 ◼インフラをコードで管理する手法 ◼従来の方法 ◼マネジメントコンソールで手作業 ◼設定手順書を見ながら一つずつ作業

    ◼IaCの方法 ◼インフラ構成をコードで記述 ◼コードを実行して自動でインフラを構築 ◼同じコードで何度でも同じ環境を作成可能 https://aws.amazon.com/jp/what-is/iac/ ツイートはこちら⇒#jawsug_bgnr
  3. 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
  4. HCL(Terraformコード) の書き方 (Amazon S3バケットを1つ作成) ツイートはこちら⇒#jawsug_bgnr Terraformブロック Terraform全体の設定を記述 バージョン指定もこちら AWSやAzure、Vmwareなど 何(Provider)に対して実行するか

    今回はAWSに対してリソースを 作成したいので、AWS Providerを指定 Provider ブロック 認証情報やリージョンなど Resourceブロック そのTerraformコードでどんな リソースを作成するか
  5. HCL(Terraformコード) の書き方 (Amazon S3バケットを1つ作成) ツイートはこちら⇒#jawsug_bgnr Resourceブロック そのTerraformコードでどんな リソースを作成するか 左記の例だと “aws_s3_bucket”:リソースタイプ

    どんなリソースを作成するか “beginner-bucket-20250721”:リソース名 そのterraformコード内でそのリソース を一意に識別するための名前 AWSの中の名前ではない点に注意 bucket = “beginner-bucket-20250721” そのリソースタイプで指定された変数 リソースタイプによって、 必須/オプションが存在
  6. Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init

    4. terraform plan 5. terraform apply 6. terraform destroy ツイートはこちら⇒#jawsug_bgnr
  7. 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
  8. 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
  9. Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init

    4. terraform plan 5. terraform apply 6. terraform destroy ディレクトリの初期化 プロバイダーファイルをダウンロード ツイートはこちら⇒#jawsug_bgnr
  10. Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init

    4. terraform plan 5. terraform apply 6. terraform destroy 実行は(実は)オプション ただし実行は強く推奨 Terraformコードを実行するとどうなるか、 想定結果を表示(Dry run) ツイートはこちら⇒#jawsug_bgnr
  11. 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
  12. Terraformの実行の仕方 at AWS 1. AWSの認証を設定 2. コードを書く 3. terraform init

    4. terraform plan 5. terraform apply 6. terraform destroy terraformコードのリソースを削除 削除は取り消せないため、必ずそのリソースを 削除してよいかを確認してから実行すること ツイートはこちら⇒#jawsug_bgnr
  13. 応用編 ◼HCLの記述 ◼dataブロック ◼ 既存のリソース(IAMロールやVPC)を、Terraform内で管理対象とはせず、利用可能にする ◼Importブロック ◼ 既存のリソース(IAMロールやVPC)を、Terraform内で管理対象に追加し、利用可能にする ◼Stateファイルの管理 ◼本資料では、ローカル(実行ディレクトリ)にてStateファイルを保管

    ◼複数人で実行する場合は、リモート(S3やHCP Terraformなど)で保管 ◼コマンド ◼terraform fmt ◼ Terraformの推奨構文に即して、インデント(空白)や改行などをきれいに整理 ◼terraform validate ◼ HCLの文法が正しいかチェック ツイートはこちら⇒#jawsug_bgnr
  14. 参考 ◼参考書 ◼[詳解]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