anthos-multi-cloud/Azure/main.tf (85 lines of code) (raw):
/**
* Copyright 2022 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 "tls_private_key" "anthos_ssh_key" {
algorithm = "RSA"
rsa_bits = 4096
}
locals {
name_prefix = "${var.name_prefix}-${random_string.suffix.result}"
}
resource "random_string" "suffix" {
length = 2
special = false
lower = true
min_lower = 2
}
module "aad_app" {
source = "./modules/aad-app"
#gcp_project = var.gcp_project_id
project_number = module.gcp_data.project_number
application_name = "${local.name_prefix}-app"
}
module "cluster_vnet" {
source = "./modules/cluster-vnet"
name = "${local.name_prefix}-vnet-rg"
region = var.azure_region
aad_app_name = "${local.name_prefix}-app"
sp_obj_id = module.aad_app.aad_app_sp_obj_id
depends_on = [
module.aad_app
]
# create_proxy = var.create_proxy
}
module "cluster_rg" {
source = "./modules/cluster-rg"
name = "${local.name_prefix}-rg"
region = var.azure_region
sp_obj_id = module.aad_app.aad_app_sp_obj_id
depends_on = [
module.aad_app
]
}
module "gcp_data" {
source = "./modules/gcp_data"
gcp_location = var.gcp_location
gcp_project = var.gcp_project_id
}
module "anthos_cluster" {
source = "./modules/anthos_cluster"
azure_region = var.azure_region
location = var.gcp_location
cluster_version = coalesce(var.cluster_version, module.gcp_data.latest_version)
admin_users = var.admin_users
anthos_prefix = local.name_prefix
resource_group_id = module.cluster_rg.resource_group_id
subnet_id = module.cluster_vnet.subnet_id
ssh_public_key = tls_private_key.anthos_ssh_key.public_key_openssh
virtual_network_id = module.cluster_vnet.vnet_id
tenant_id = module.aad_app.tenant_id
control_plane_instance_type = var.control_plane_instance_type
node_pool_instance_type = var.node_pool_instance_type
application_id = module.aad_app.aad_app_id
fleet_project = "projects/${module.gcp_data.project_number}"
depends_on = [
module.aad_app, module.cluster_rg, module.cluster_vnet
]
}
module "create_vars" {
source = "terraform-google-modules/gcloud/google"
version = "~> 3.4"
platform = "linux"
create_cmd_entrypoint = "./modules/scripts/create_vars.sh"
create_cmd_body = "\"${local.name_prefix}\" \"${var.gcp_location}\" \"${var.azure_region}\" \"${var.cluster_version}\" \"${tls_private_key.anthos_ssh_key.public_key_openssh}\" \"${module.cluster_vnet.subnet_id}\""
module_depends_on = [module.anthos_cluster]
}