2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHub Actionsを利用したTerraformの自動実行

Last updated at Posted at 2024-02-29

image.png

はじめに

今回は、GitHub Actionsを使用してTerraformを自動実行する方法について説明します。Terraformは、コードでインフラストラクチャを管理するためのツールであり、GitHub Actionsを活用することで、自動化されたデプロイメントプロセスを簡単に設定できます。

GitHub Actionsの設定

今回は以下のような(main.tf)ファイルでGCPのVMインスタンスを作成するtfファイルを実行してみたいと思います。

#VMインスタンス起動用のmain.tf

terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "3.72.0"
    }
  }
}

provider "google" {
  credentials = file(".terraform/providers/registry.terraform.io/hashicorp/google/3.72.0/darwin_arm64/gcp.json")
  project     = "gcpteam" #GCPのプロジェクト名
  region      = "asia-northeast1"
}

resource "google_compute_instance" "sample-instance" {
  name         = "sample-instance" #インスタンス名
  machine_type = "n2-standard-2"
  zone         = "asia-northeast1-a"  # インスタンスのゾーンを指定

  boot_disk {
    initialize_params {
      image = "ubuntu-os-cloud/ubuntu-2004-lts"
      size  = 100  # ブートディスクのサイズを100GBに設定
    }
  }
  
  network_interface {
    network = "default"
    access_config {
      // 外部IPアドレスを持つように設定
    }
  }

以下は、GitHub Actionsの設定ファイル(terraform.yml)の例です。この設定では、mainブランチにプッシュが行われ、かつmain.tfファイルに変更があった場合にのみ、Terraformの実行がトリガーされます。

name: Terraform Apply

on:
  push:
    branches:
      - main
    paths:
      - ./main.tf

jobs:
  terraform:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup Terraform
        uses: hashicorp/setup-terraform@v1
        with:
          terraform_version: 1.0.5

      - name: Terraform Init
        run: terraform init

      - name: Terraform Plan
        run: terraform plan

      - name: Terraform Apply
        run: terraform apply -auto-approve

ディレクトリ構造

project_root/

├── .github/
│   └── workflows/
│       └── terraform.yml        # GitHub Actionsのワークフロー定義ファイル

├── .terraform/
│   └── (Terraformが管理するファイルとディレクトリ)

├── [main.tf](http://main.tf/)                      # Terraformのメイン設定ファイル
├── gcp.json                     # Google Cloud Platformの認証情報ファイル(セキュリティに注意)
├── terraform.tfstate
├── terraform.tfstate.backup

├── GCP_test.drawio              # オプション:プロジェクトの図面やドキュメント
└── [README.md](http://readme.md/)                    # プロジェクトの説明やドキュメント

手動での実行方法

GitHub Actionsのワークフローは、手動でトリガーすることもできます。以下の手順に従って、手動で実行することができます。

  1. GitHubのリポジトリページに移動します。

  2. ページ上部にある「Actions」タブをクリックします。

  3. 左側のサイドバーで、手動でトリガーしたいワークフローが含まれているワークフローを選択します。

  4. ボタンをクリックしてワークフローを手動で実行します。

    以下のように問題なく実行が完了すれば、成功です。

スクリーンショット 2024-02-28 18.43.38.png

メール通知や実行状況の監視

GitHub Actionsでは、ジョブの実行状況や結果を確認するための通知機能を提供しています。実行が完了することで自身のメールに完了連絡を送らせることができます。また、ジョブの実行状況を監視するためのダッシュボードも利用できます。これにより、実行の状態をリアルタイムで把握し、必要に応じて対応することができます。
スクリーンショット 2024-02-28 18.41.55.png

さらなる活用

GitHub Actionsを使用したTerraformの自動実行は、開発プロセスを効率化するだけでなく、さまざまな活用方法があります。たとえば、ワークフローをカスタマイズして特定の条件下で実行する、別の環境へのデプロイメントを自動化するなど、さまざまなシナリオに応じて設定をカスタマイズできます。

以上がGitHub Actionsを使用したTerraformの自動実行に関する解説です。自動化により、開発者はより多くの時間をコードの改善やビジネス価値の創出に費やすことができます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?