You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:52:03