I am passing below user_data to aws_instance resource and found the host didn’t get renamed as per the my requirement
user_data = jsonencode({
cluster_name = local.cluster_name,
node_hostname_tmpl = "{node_num:02d}.${local.cluster_name}.${local.hosting_env_dns_internal_zone_name}",
node_num = each.key + 1,
cluster_cfg = var.data_fabric_cluster_node_bootstrap_cfg,
data_block_dev_paths = var.data_fabric_cluster_node_data_block_devs.paths,
mapr_password = data.aws_secretsmanager_secret_version.mapr_password_secret_ver.secret_string,
nodes_ssh_host_pubkeys = local.host_pub_key_concatenated,
nodes_ssh_user_pubkeys = local.user_pub_key_concatenated,
ssh_host_privkey = aws_secretsmanager_secret_version.host_pri_key_ver[each.key].secret_string,
ssh_host_pubkey = aws_secretsmanager_secret_version.host_pub_key_ver[each.key].secret_string,
ssh_user_privkey = aws_secretsmanager_secret_version.user_pri_key_ver[each.key].secret_string,
ssh_user_pubkey = aws_secretsmanager_secret_version.user_pub_key_ver[each.key].secret_string,
hostname_script = <<-EOF
#!/bin/bash
HOSTNAME=$(printf '%02d' $((each.key + 1))).${local.cluster_name}.${local.region}
IP=$(curl -s http://169.254.169.254/latest/meta-data/local-ipv4)
hostname $HOSTNAME
echo "$IP $HOSTNAME" >> /etc/hosts
echo 'preserve_hostname: true' >> /etc/cloud/cloud.cfg
echo $HOSTNAME > /etc/hostname
hostnamectl set-hostname $HOSTNAME
EOF
})
I tried to set hostname but the hostname is not getting updated and is getting default aws ec2 naming.