11locals {
22 tls_secret_name = coalesce (var. ingress_tls_secret_name , replace (var. argocd_internal_url , " ." , " -" ))
3+ effective_admin_password = (
4+ var. admin_password != null && var. admin_password != " "
5+ ) ? var. admin_password : random_password. argocd_admin_password [0 ]. result
6+ }
7+
8+ resource "random_password" "argocd_admin_password" {
9+ count = var. admin_password == null || var. admin_password == " " ? 1 : 0
10+ length = 28
11+ special = true
12+ min_upper = 1
13+ min_lower = 1
14+ min_numeric = 1
15+ min_special = 1
16+ override_special = " !@#$%*+-=?"
317}
418
519resource "helm_release" "argocd" {
@@ -13,7 +27,7 @@ resource "helm_release" "argocd" {
1327 templatefile (" ${ path . root } /src/aks-platform/argocd/argocd_helm_setup_values.yaml" , {
1428 ARGOCD_APPLICATION_NAMESPACES = var.argocd_application_namespaces
1529 TENANT_ID = var.tenant_id
16- APP_CLIENT_ID = var.app_client_id
30+ APP_CLIENT_ID = var.entra_app_client_id
1731 ENTRA_ADMIN_GROUP_OBJECT_IDS = var.entra_admin_group_object_ids
1832 ENTRA_DEVELOPER_GROUP_OBJECT_IDS = var.entra_developer_group_object_ids
1933 ENTRA_READER_GROUP_OBJECT_IDS = var.entra_reader_group_object_ids
@@ -27,26 +41,34 @@ resource "helm_release" "argocd" {
2741
2842resource "azurerm_key_vault_secret" "argocd_admin_username" {
2943 count = var. enable_store_admin_username ? 1 : 0
30- key_vault_id = var. kv_core_id
44+ key_vault_id = var. kv_id
3145 name = " argocd-admin-username"
3246 value = " admin"
3347}
3448
49+ resource "azurerm_key_vault_secret" "argocd_admin_password" {
50+ count = var. enable_store_admin_password ? 1 : 0
51+ key_vault_id = var. kv_id
52+ name = " argocd-admin-password"
53+ value = local. effective_admin_password
54+ }
55+
3556resource "null_resource" "argocd_change_admin_password" {
3657 count = var. enable_change_admin_password ? 1 : 0
3758
3859 triggers = {
39- argocd_password = var.admin_password
60+ argocd_password = local.effective_admin_password
4061 force_reinstall = var.argocd_force_reinstall_version
4162 }
4263
4364 provisioner "local-exec" {
44- command = " kubectl -n ${ var . namespace } patch secret argocd-secret -p '{\" stringData\" : {\" admin.password\" : \" ${ bcrypt (var . admin_password )} \" , \" admin.passwordMtime\" : \" '$(date +%FT%T%Z)'\" }}'"
65+ command = " kubectl -n ${ var . namespace } patch secret argocd-secret -p '{\" stringData\" : {\" admin.password\" : \" ${ bcrypt (local . effective_admin_password )} \" , \" admin.passwordMtime\" : \" '$(date +%FT%T%Z)'\" }}'"
4566 }
4667
4768 depends_on = [
4869 # Ensure helm release is applied before patching the secret when enabled
4970 helm_release . argocd ,
71+ azurerm_key_vault_secret . argocd_admin_password ,
5072 ]
5173}
5274
@@ -88,7 +110,7 @@ module "argocd_workload_identity_configuration" {
88110 aks_resource_group_name = var. aks_resource_group_name
89111 namespace = var. namespace
90112
91- key_vault_id = var. kv_core_id
113+ key_vault_id = var. kv_id
92114 key_vault_certificate_permissions = [" Get" ]
93115 key_vault_key_permissions = [" Get" ]
94116 key_vault_secret_permissions = [" Get" ]
@@ -98,10 +120,9 @@ module "argocd_workload_identity_configuration" {
98120
99121resource "azurerm_private_dns_a_record" "argocd_ingress" {
100122 count = var. enable_private_dns_a_record ? 1 : 0
101- name = var. ingress_hostname_prefix
123+ name = var. dns_record_name_for_ingress
102124 zone_name = var. internal_dns_zone_name
103125 resource_group_name = var. internal_dns_zone_resource_group_name
104126 ttl = 3600
105127 records = [var . ingress_load_balancer_ip ]
106128}
107-
0 commit comments