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

RHEL 8.5实例CloudFormation初始化失败:subscription-manager未及时注册导致yum无法安装cloud-utils-growpart

解决CloudFormation初始化阶段RHEL 8.5订阅未完成导致yum安装失败的问题

我完全理解你的困境——CloudFormation的cfn-init偏偏跑在系统订阅注册完成之前,导致yum没法拉取软件包,既找不到合适的等待触发条件,又没凭证手动执行注册命令,确实卡壳。下面是几个针对这个场景的可行解决方案,你可以根据自身环境选择:

方案1:循环等待subscription-manager完成注册

从你SSH登录后订阅正常的情况来看,系统启动后应该有自动注册的机制(大概率是AWS RHEL AMI自带的自动订阅逻辑),那我们可以在执行yum安装前加一段循环检测,直到订阅状态正常再继续执行后续步骤。

你可以直接修改CloudFormation Metadata里的grow_part配置,先加入等待检测命令:

MST01:
  Type: 'AWS::EC2::Instance'
  Metadata:
    AWS::CloudFormation::Init:
      configSets:
        config:
          - grow_part
      grow_part:
        commands:
          00_wait_for_subscription:
            command: |
              # 循环等待订阅完成,最多等待10分钟(可根据实际情况调整次数)
              for i in {1..60}; do
                if subscription-manager status | grep -q "Current Status: Subscribed"; then
                  echo "订阅已完成,开始安装工具"
                  exit 0
                fi
                echo "等待订阅中... 第$i次尝试"
                sleep 10
              done
              # 超时则退出失败
              exit 1
          01_install_gp:
            command: yum -y install cloud-utils-growpart
  # 其余Properties配置保持不变

或者也可以在UserData的bash脚本里,执行cfn-init之前加入这段等待逻辑,效果是一样的。这个方案的核心就是用循环+sleep,确保订阅完成后再执行依赖yum的操作,不需要额外资源,适配性最强。

方案2:配置临时yum源绕过订阅(需合规)

如果你的环境有内部的RHEL镜像源,或者可以访问合规的公开RHEL镜像,也可以临时配置yum源来安装cloud-utils-growpart,完全绕过subscription-manager的限制:

grow_part:
  commands:
    01_config_temp_repo:
      command: |
        cat > /etc/yum.repos.d/rhel8-temp.repo <<EOF
        [rhel8-baseos-temp]
        name=RHEL 8 BaseOS Temporary Repo
        baseurl=http://your-internal-repo/rhel/8/baseos/x86_64/os/
        enabled=1
        gpgcheck=0
        EOF
    02_install_gp:
      command: yum -y install cloud-utils-growpart
    03_cleanup_temp_repo:
      command: rm -f /etc/yum.repos.d/rhel8-temp.repo

这个方案需要你有可用的镜像源,适合订阅机制不稳定或者无法等待的场景,但要注意版权合规问题。

方案3:预安装工具到自定义AMI

如果这个工具是你所有RHEL实例都需要的,最彻底的解决办法是制作自定义AMI:

  1. 启动一台RHEL 8.5实例,等待订阅完成后安装cloud-utils-growpart
  2. 基于这台实例创建自定义AMI
  3. 后续CloudFormation直接使用这个自定义AMI启动实例,就跳过了初始化阶段的安装步骤

这个方案一劳永逸,避免了每次实例启动都要处理订阅和安装的问题。

内容的提问来源于stack exchange,提问作者Alt-tab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:42:50