-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathcloudsql.tf
70 lines (60 loc) · 2.12 KB
/
cloudsql.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
resource "random_password" "db_password" {
length = 16
special = true
override_special = "_%@"
}
resource "google_secret_manager_secret" "secret" {
project = data.google_project.project.project_id
secret_id = "ipam-db-password"
replication {
automatic = true
}
depends_on = [
google_project_service.project
]
}
resource "google_secret_manager_secret_version" "secret-version-data" {
secret = google_secret_manager_secret.secret.name
secret_data = random_password.db_password.result
}
resource "google_secret_manager_secret_iam_member" "secret-access" {
project = data.google_project.project.project_id
secret_id = google_secret_manager_secret.secret.id
role = "roles/secretmanager.secretAccessor"
member = "serviceAccount:${google_service_account.autopilot.email}"
depends_on = [google_secret_manager_secret.secret]
}
resource "google_sql_database_instance" "instance" {
name = "ipam-mysql"
database_version = "MYSQL_8_0"
region = var.region
project = data.google_project.project.project_id
settings {
tier = "db-f1-micro"
}
deletion_protection = "true"
}
resource "google_sql_database" "database" {
name = "ipam"
project = data.google_project.project.project_id
instance = google_sql_database_instance.instance.name
}
resource "google_sql_user" "user" {
name = "ipam"
project = data.google_project.project.project_id
instance = google_sql_database_instance.instance.name
password = random_password.db_password.result
}