terraformの必要なファイルを設定

This commit is contained in:
ry.yamafuji 2025-12-05 02:16:37 +09:00
parent c38992d942
commit 27c1c461e8
8 changed files with 138 additions and 0 deletions

11
readme/deploy.md Normal file
View File

@ -0,0 +1,11 @@
# デプロイの方法について
## 環境について
* terraform
* google cloud
* Cloud Run Job

5
terraform/af.tf Normal file
View File

@ -0,0 +1,5 @@
resource "google_artifact_registry_repository" "repo" {
location = var.region
repository_id = "cicd-repo-${var.env_name}"
format = "DOCKER"
}

10
terraform/platform.tf Normal file
View File

@ -0,0 +1,10 @@
# Google CloudのAPIを有効化
resource "google_project_service" "services" {
for_each = toset([
"run.googleapis.com",
"artifactregistry.googleapis.com",
"cloudbuild.googleapis.com",
])
service = each.key
}

5
terraform/provider.tf Normal file
View File

@ -0,0 +1,5 @@
# Google Providerの設定
provider "google" {
project = var.project_id
region = var.region
}

30
terraform/run_job.tf Normal file
View File

@ -0,0 +1,30 @@
# Cloud Run Jobのリソース
resource "google_cloud_run_job" "job" {
name = "${var.job_name}-${var.env_name}-job"
location = var.region
#
service_account = google_service_account.job_sa.email
template {
template {
containers {
image = var.container_image
resources {
limits = {
cpu = var.cpu_limit
memory = var.memory_limit
}
}
# env {
#
# name = "ENV_VAR_NAME"
# }
}
timeout_seconds = var.timeout_seconds
}
}
}

14
terraform/sa.tf Normal file
View File

@ -0,0 +1,14 @@
resource "google_service_account" "job_sa" {
account_id = "sa-${var.job_name}-${var.env_name}"
display_name = "Cloud Run Job Service Account for ${var.job_name} in ${var.env_name} environment"
description = "Cloud Run Job Service Account for ${var.job_name} in ${var.env_name} environment"
project = var.project_id
}
# IAM role assignment
# Cloud Run Job実行に必要な権限を付与
resource "google_project_iam_member" "run_job_invoker" {
project = var.project_id
role = "roles/run.invoker"
member = "serviceAccount:${google_service_account.job_sa.email}"
}

10
terraform/sample.tfvars Normal file
View File

@ -0,0 +1,10 @@
project_id = "プロジェクトIDを指定してください"
region = "asia-northeast1"
env_name = "dev"
job_name = "ジョブ名を指定してください"
# コンテナイメージCI/CDから渡される想定
cpu_limit = "1"
memory_limit = "512Mi"
timeout_seconds = 900

53
terraform/variables.tf Normal file
View File

@ -0,0 +1,53 @@
# GCPプロジェクトIDとリージョン
variable "project_id" {
description = "The ID of the GCP project to deploy resources into."
type = string
}
variable "region" {
description = "The GCP region to deploy resources into."
type = string
default = "asia-northeast1" #
}
variable "env_name" {
description = "The environment name for the deployment."
type = string
default = "dev"
validation {
condition = contains(["dev", "staging", "prd"], var.env_name)
error_message = "env_name must be one of: dev, staging, prd."
}
}
variable "job_name" {
description = "The name of the Cloud Run Job."
type = string
default = "get-news-ai"
}
# (CI/CDから渡される想定)
variable "container_image" {
description = "The container image for the Cloud Run Job."
type = string
}
# Cloud Run Jobの設定変数
variable "cpu_limit" {
description = "The CPU limit for the Cloud Run Job container."
type = string
default = "1"
}
variable "memory_limit" {
description = "The memory limit for the Cloud Run Job container."
type = string
default = "512Mi"
}
variable "timeout_seconds" {
description = "The timeout for the Cloud Run Job."
type = number
default = 300
}