如何在Terraform AWS EKS模块默认启动模板中配置Cloud Init
解决方案
在Terraform AWS EKS模块20.31.6版本中,当使用默认启动模板(use_custom_launch_template = false)时,cloudinit_pre_nodeadm仅对自定义启动模板生效,无法作用于默认模板。要在默认模板下配置Cloud Init,需使用pre_user_data参数——该参数会将自定义内容注入到模块自动生成的用户数据中,在nodeadm初始化步骤前执行。
你当前配置的disk_size和block_device_mappings可以保留,它们在默认启动模板下能正常生效,用于设置根磁盘容量。
修改后的代码示例:
module "eks" { source = "terraform-aws-modules/eks/aws" version = "= 20.31.6" cluster_name = var.cluster_name cluster_service_ipv4_cidr = "10.1.0.0/16" cluster_version = "1.30" cluster_endpoint_private_access = true cluster_endpoint_public_access = false vpc_id = var.vpc_id subnet_ids = tolist(var.subnets_ids) enable_irsa = true #Determines whether to create an OpenID Connect Provider for EKS to enable IAM Roles for Service Accounts enable_cluster_creator_admin_permissions = true create_node_security_group = true create_cloudwatch_log_group = true bootstrap_self_managed_addons = var.bootstrap_self_managed_addons cluster_addons = { coredns = { most_recent = true } } node_security_group_additional_rules = var.additional_node_security_group_rules cluster_additional_security_group_ids = var.additional_cluster_security_group_ids tags = var.tags eks_managed_node_groups = { for group_name, group_config in var.mng_node_groups : group_name => { use_custom_launch_template = false instance_types = group_config.instance_types disk_size = 200 block_device_mappings = { xvda = { device_name = "/dev/xvda" ebs = { volume_size = 200 volume_type = "gp3" delete_on_termination = true encrypted = true } } } ami_type = group_config.ami_type ami_release_version = group_config.ami_release_version min_size = group_config.min_size max_size = group_config.max_size desired_size = group_config.desired_size capacity_type = group_config.capacity_type taints = group_config.taints use_latest_ami_release_version = true update_launch_template_default_version = true node_security_group_id = [module.eks.node_security_group_id] enable_bootstrap_user_data = true # 使用pre_user_data传入Cloud Init内容,替代cloudinit_pre_nodeadm pre_user_data = data.template_file.user_data.rendered labels = group_config.labels } } }
关键说明
pre_user_data:接受字符串格式的用户数据内容,会被模块合并到默认生成的启动模板用户数据中,在nodeadm初始化前执行,满足你配置Cloud Init的需求。- 保留的
disk_size和block_device_mappings:在默认启动模板模式下,这两个参数会直接作用于根磁盘配置,确保磁盘容量和类型符合预期。
内容的提问来源于stack exchange,提问作者MoonHorse
相关产品推荐
相关产品推荐

