๐Ÿ“ฆ juspay / hyperswitch-suite

๐Ÿ“„ locals.tf ยท 61 lines
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
61locals {
  # Naming convention
  name_prefix = "${var.environment}-${var.project_name}-${var.name_override}"

  # Common tags merged with environment-specific tags
  common_tags = merge(
    var.tags,
    {
      Module = try(var.tags.Module, "composition/squid-proxy")
    }
  )

  # Instance tags (propagated to EC2 instances)
  instance_tags = merge(
    var.tags,
    {
      Name = "${local.name_prefix}-instance"
    }
  )

  # Logs bucket selection - use created or existing
  logs_bucket_name = var.create_logs_bucket ? module.logs_bucket[0].bucket_name : var.logs_bucket_name
  logs_bucket_arn  = var.create_logs_bucket ? module.logs_bucket[0].bucket_arn : var.logs_bucket_arn
  logs_bucket_id   = var.create_logs_bucket ? module.logs_bucket[0].bucket_id : var.logs_bucket_name

  # Config bucket selection - use created or existing
  config_bucket_name = var.create_config_bucket ? module.config_bucket[0].bucket_name : var.config_bucket_name
  config_bucket_arn  = var.create_config_bucket ? module.config_bucket[0].bucket_arn : var.config_bucket_arn

  # Userdata templating - replace placeholders with actual values
  userdata_content = replace(
    replace(
      replace(
        replace(
          var.custom_userdata,
          "{{config_bucket}}", local.config_bucket_name
        ),
        "{{logs_bucket}}", local.logs_bucket_id
      ),
      "{{bucket-path-prefix}}", var.s3_config_path_prefix
    ),
    "{{bucket-name}}", local.config_bucket_name
  )

  # IAM role selection - use created or existing
  # Priority: 1) Created role+profile, 2) Created profile for existing role, 3) Existing profile
  instance_profile_name = (
    var.create_iam_role ? module.squid_iam_role[0].instance_profile_name :
    var.create_instance_profile ? aws_iam_instance_profile.squid_profile[0].name :
    var.existing_iam_instance_profile_name
  )
  iam_role_arn  = var.create_iam_role ? module.squid_iam_role[0].role_arn : data.aws_iam_role.existing_squid_role[0].arn
  iam_role_name = var.create_iam_role ? module.squid_iam_role[0].role_name : data.aws_iam_role.existing_squid_role[0].name

  # Launch Template selection - use created or existing
  # IMPORTANT: Use explicit version number instead of "$Latest" to ensure
  # Terraform detects changes and triggers instance refresh automatically
  launch_template_id      = var.use_existing_launch_template ? var.existing_launch_template_id : module.launch_template[0].lt_id
  launch_template_version = var.use_existing_launch_template ? var.existing_launch_template_version : tostring(module.launch_template[0].lt_latest_version)
}