ger*_*468 4 python google-cloud-platform terraform
我正在使用 terraform 在谷歌云上创建我的基础设施。我使用 tfvars 文件来保存变量,例如数据库密码。我将我的应用程序部署到云运行并在 sql 中创建数据库。问题是我需要将此数据库添加到云运行的 Cloud SQL 连接。因为否则这个应用程序无法连接到数据库。我怎样才能用 terraform 做到这一点?
我的 tf 文件:
variable "database_password" {
type = string
}
variable "database_user" {
type = string
}
variable "project_name" {
type=string
}
variable "jwt_key" {
type = string
}
provider "google"{
credentials=file("credentials.json")
project=var.project_name
region="us-west1"
}
resource "google_sql_database_instance" "instance" {
name="socialmediadatabase"
region="us-central1"
database_version="POSTGRES_13"
deletion_protection = false
settings{
tier="db-f1-micro"
}
}
resource "google_sql_database" "database"{
name="socialmedia"
instance=google_sql_database_instance.instance.name
}
resource "google_sql_user" "database-user" {
name = var.database_user
instance = google_sql_database_instance.instance.name
password = var.database_password
}
resource "google_cloud_run_service" "run" {
name="socialmedia"
location = "us-central1"
template {
spec {
containers {
image = "gcr.io/${var.project_name}/socialmedia:latest"
ports {
container_port = 5000
}
env {
name="ENV"
value = "production"
}
env {
name="JWT_KEY"
value = var.jwt_key
}
env {
name="DB_URL"
value = "postgresql://${var.database_user}:${var.database_password}@/socialmedia?host=/cloudsql/${google_sql_database_instance.instance.connection_name}"
}
}
}
}
metadata {
annotations = {
"run.googleapis.com/cloudsql-instances"=google_sql_database_instance.instance.connection_name
}
}
}
#?
resource "google_cloud_run_service_iam_member" "member" {
service = google_cloud_run_service.run.name
location = google_cloud_run_service.run.location
role = "roles/run.invoker"
member = "allUsers"
}
Run Code Online (Sandbox Code Playgroud)
我解决了。我应该在模板下添加元数据。这是正确的:
variable "database_password" {
type = string
}
variable "database_user" {
type = string
}
variable "project_name" {
type=string
}
variable "jwt_key" {
type = string
}
provider "google"{
credentials=file("credentials.json")
project=var.project_name
region="us-west1"
}
resource "google_sql_database_instance" "instance" {
name="socialmediadatabase"
region="us-central1"
database_version="POSTGRES_13"
deletion_protection = false
settings{
tier="db-f1-micro"
}
}
resource "google_sql_database" "database"{
name="socialmedia"
instance=google_sql_database_instance.instance.name
}
resource "google_sql_user" "database-user" {
name = var.database_user
instance = google_sql_database_instance.instance.name
password = var.database_password
}
resource "google_cloud_run_service" "run" {
name="socialmedia"
location = "us-central1"
template {
spec {
containers {
image = "gcr.io/${var.project_name}/socialmedia:latest"
ports {
container_port = 5000
}
env {
name="ENV"
value = "production"
}
env {
name="JWT_KEY"
value = var.jwt_key
}
env {
name="DB_URL"
value = "postgresql://${var.database_user}:${var.database_password}@/socialmedia?host=/cloudsql/${google_sql_database_instance.instance.connection_name}"
}
}
}
metadata {
annotations = {
"run.googleapis.com/cloudsql-instances"=google_sql_database_instance.instance.connection_name
}
}
}
}
#?
resource "google_cloud_run_service_iam_member" "member" {
service = google_cloud_run_service.run.name
location = google_cloud_run_service.run.location
role = "roles/run.invoker"
member = "allUsers"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3560 次 |
| 最近记录: |