data "aws_subnet" "subnet-0b76775685c78e853" {
  id = "subnet-0b76775685c78e853"
}

data "aws_eks_cluster" "dsrv-prod" {
  name = "dsrv-prod-eks-cluster"
}

data "aws_ami" "eks-node-itunes-pub" {
  most_recent = true
  owners      = ["amazon"]

  filter {
    name   = "name"
    values = ["amazon-eks-node-al2023-x86_64-standard-1.32-v20250519"]
  }
}

resource "aws_launch_template" "dsrv-prod-eks-cluster-itunes-pub" {
  #checkov:skip=CKV_AWS_341: Ensure Launch template should not have a metadata response hop limit greater than 1
  #checkov:skip=CKV_AWS_88
  name        = "dsrv-prod-eks-cluster-itunes-pub"
  description = "iTunes public EKS node – EIP 52.28.7.250 / EFS fs-0affd77593ee54e18"

  image_id      = data.aws_ami.eks-node-itunes-pub.id
  instance_type = "m5.2xlarge"
  key_name      = "delp2-ff"

  iam_instance_profile {
    name = "delp-EKS-worker-node-Role"
  }

  network_interfaces {
    associate_public_ip_address = false
    security_groups = [aws_security_group.sg-08d8a763.id]
    delete_on_termination       = true
  }

  block_device_mappings {
    device_name = "/dev/xvda"
    ebs {
      volume_size           = 100
      volume_type           = "gp3"
      delete_on_termination = true
      encrypted             = true
    }
  }

  metadata_options {
    http_endpoint               = "enabled"
    http_tokens                 = "required"
    http_put_response_hop_limit = 2
  }

  tag_specifications {
    resource_type = "instance"
    tags = {
      "Name"                                        = "dsrv-prod-eks-cluster-worker-node-itunes-pub"
      "kubernetes.io/cluster/dsrv-prod-eks-cluster" = "owned"
      "Business-Unit"                               = "Delivery-Services"
      "Environment"                                 = "Prod"
      "Owner"                                       = "vijay.subramaniam@sonymusic.com"
      "Project-Code"                                = "SME-2000-0306B"
      "Project-Name"                                = "Delivery-Prod"
      "SERVER_TYPE"                                 = "EKS"
      "OS"                                          = "AL2023"
      "DATA"                                        = "NORMAL"
      "OPS"                                         = "STND"
      "Patch-Group"                                 = "Container"
      "CLOPS_FW"                                    = "YES"
      "CLOPS_PUB_IP"                                = "YES"
    }
  }

  user_data = base64encode(templatefile("${path.module}/userdata-scripts/dsrv-prod-eks-cluster-itunes-pub.sh.tpl", {
    cluster_name     = "dsrv-prod-eks-cluster"
    cluster_endpoint = data.aws_eks_cluster.dsrv-prod.endpoint
    cluster_ca       = data.aws_eks_cluster.dsrv-prod.certificate_authority[0].data
    service_cidr     = data.aws_eks_cluster.dsrv-prod.kubernetes_network_config[0].service_ipv4_cidr
  }))
}

resource "aws_autoscaling_group" "dsrv-prod-eks-cluster-worker-node-itunes-pub" {
  name             = "dsrv-prod-eks-cluster-worker-node-itunes-pub"
  desired_capacity = 1
  min_size         = 1
  max_size         = 1

  vpc_zone_identifier = [data.aws_subnet.subnet-0b76775685c78e853.id]

  launch_template {
    id      = aws_launch_template.dsrv-prod-eks-cluster-itunes-pub.id
    version = aws_launch_template.dsrv-prod-eks-cluster-itunes-pub.latest_version
  }

  tag {
    key                 = "Name"
    value               = "dsrv-prod-eks-cluster-worker-node-itunes-pub"
    propagate_at_launch = true
  }

  tag {
    key                 = "kubernetes.io/cluster/dsrv-prod-eks-cluster"
    value               = "owned"
    propagate_at_launch = true
  }

  tag {
    key                 = "Business-Unit"
    value               = "Delivery-Services"
    propagate_at_launch = false
  }

  tag {
    key                 = "Environment"
    value               = "Prod"
    propagate_at_launch = false
  }

  tag {
    key                 = "Owner"
    value               = "vijay.subramaniam@sonymusic.com"
    propagate_at_launch = false
  }

  tag {
    key                 = "Project-Code"
    value               = "SME-2000-0306B"
    propagate_at_launch = false
  }

  tag {
    key                 = "Project-Name"
    value               = "Delivery-Prod"
    propagate_at_launch = false
  }

  lifecycle {
    ignore_changes = [desired_capacity]
  }
}

