-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathcomposer.tf
68 lines (56 loc) · 1.97 KB
/
composer.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
# DEPRECATION WARNING: This code has been deprecated
# The maintained & current code can be found at src/mlstacks/terraform/
# under the same relative location.
data "google_project" "project" {
project_id = local.project_id
}
resource "google_composer_environment" "zenml-airflow" {
name = "${local.prefix}-${local.airflow.environment_name}"
region = local.airflow.region
config {
software_config {
image_version = "composer-2-airflow-2"
pypi_packages = {
pydantic = "~=2.7.1"
}
}
environment_size = local.airflow.environment_size
node_config {
service_account = google_service_account.env-sa.name
}
}
depends_on = [
google_project_service.enable_services,
google_service_account_iam_member.cc-sa-extension
]
}
# service account to use for composer environment
resource "google_service_account" "env-sa" {
account_id = "${local.prefix}-${local.airflow.environment_service_account}"
display_name = "Service Account for ZenML Composer Environment"
}
# define roles to give to the env service account
locals {
roles_to_grant_to_env_service_account = [
"roles/containerregistry.ServiceAgent",
"roles/secretmanager.admin",
"roles/storage.admin",
"roles/composer.worker",
]
}
resource "google_project_iam_member" "roles-env-sa" {
project = local.project_id
member = "serviceAccount:${google_service_account.env-sa.email}"
for_each = toset(local.roles_to_grant_to_env_service_account)
role = each.value
}
# allow cloud composer service account access to env sa to add k8s bindings
resource "google_service_account_iam_member" "cc-sa-extension" {
provider = google-beta
service_account_id = google_service_account.env-sa.name
role = "roles/composer.ServiceAgentV2Ext"
member = "serviceAccount:service-${data.google_project.project.number}@cloudcomposer-accounts.iam.gserviceaccount.com"
depends_on = [
google_project_service.enable_services
]
}