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

如何使用Ansible或Terraform通过HP iLO自动化安装服务器操作系统

基于HP iLO自动化安装Ubuntu的实现方案

前置准备

  • 确保个人PC和目标服务器iLO管理口网络连通,使用的iLO账号具备虚拟介质挂载、电源控制、远程控制台操作权限
  • 确认本地存储的Ubuntu镜像文件路径,提前校验哈希值避免镜像损坏
  • 提前准备对应Ubuntu版本的自动安装应答文件:20.04及以上版本使用autoinstall.yaml(适配subiquity安装器),18.04及更早版本使用preseed配置,提前写好磁盘分区、网络配置、默认用户、SSH密钥、软件源等配置,避免安装过程卡在交互步骤
  • 控制端(个人PC)提前安装依赖:使用Ansible的话安装community.general和hpe.ilo集合;使用Terraform的话提前配置好HPE iLO provider

Ansible 实现流程

Ansible更适合全流程编排,支持临时服务启停、状态轮询等长流程操作,不需要额外部署常驻服务:

  1. 本地启动临时HTTP服务,托管Ubuntu ISO镜像和autoinstall应答文件,供iLO挂载和安装过程拉取:
    - name: 启动临时HTTP服务托管安装资源
      ansible.builtin.command: >
        python3 -m http.server 8080 --bind {{ 本地PC在iLO网段的IP }} --directory {{ 本地ISO和应答文件存放目录 }}
      async: 3600
      poll: 0
      register: local_http_pid
      delegate_to: localhost
    
    如果不想启动HTTP服务,也可以通过iLO虚拟介质通道直接挂载本地ISO,不过传输速度慢于HTTP方式,适合千兆以上管理网场景。
  2. 调用iLO模块将Ubuntu镜像挂载为服务器的虚拟CD/DVD设备:
    - name: 挂载Ubuntu安装镜像到服务器虚拟光驱
      hpe.ilo.ilo_virtual_media:
        baseuri: {{ iLO管理口IP }}
        username: {{ iLO登录账号 }}
        password: {{ iLO登录密码 }}
        image_url: "http://{{ 本地PC在iLO网段的IP }}:8080/{{ Ubuntu镜像文件名 }}"
        media_type: CD
        inserted: true
      delegate_to: localhost
    
  3. 配置服务器单次从虚拟光驱启动,强制重启进入安装流程:
    - name: 设置下次启动项为虚拟光驱
      community.general.hpilo_boot:
        host: {{ iLO管理口IP }}
        login: {{ iLO登录账号 }}
        password: {{ iLO登录密码 }}
        state: boot_once
        boot_order: cdrom
      delegate_to: localhost
    
    - name: 重启服务器触发安装
      community.general.hpilo_power:
        host: {{ iLO管理口IP }}
        login: {{ iLO登录账号 }}
        password: {{ iLO登录密码 }}
        state: rebooted
        force: true
      delegate_to: localhost
    
  4. 轮询等待安装完成,判断标准为服务器系统IP的22端口(SSH)可正常连通,之后执行清理操作:卸载虚拟介质、恢复本地硬盘为默认启动项、关闭本地临时HTTP服务。
    - name: 等待系统安装完成,SSH服务就绪
      ansible.builtin.wait_for:
        host: {{ 服务器操作系统IP }}
        port: 22
        delay: 60
        timeout: 1800
    
    - name: 卸载虚拟安装介质
      hpe.ilo.ilo_virtual_media:
        baseuri: {{ iLO管理口IP }}
        username: {{ iLO登录账号 }}
        password: {{ iLO登录密码 }}
        inserted: false
      delegate_to: localhost
    
    - name: 关闭本地临时HTTP服务
      ansible.builtin.shell: kill {{ local_http_pid.ansible_pid }}
      delegate_to: localhost
    

Terraform 实现流程

Terraform适合声明式定义基础设施配置,如果后续需要对接服务器资源编排、云原生环境部署可以选择该方案:

  1. 工作目录下初始化iLO provider:
    terraform {
      required_providers {
        ilo = {
          source  = "hpe/ilo"
          version = ">=1.2.0"
        }
      }
    }
    
    provider "ilo" {
      host     = var.ilo_ip
      username = var.ilo_username
      password = var.ilo_password
    }
    
  2. 定义安装相关资源:因为Terraform本身不擅长管理临时长生命周期进程,建议提前将ISO和应答文件放在稳定可达的HTTP文件服务上,也可以通过local-exec provisioner临时启动本地HTTP服务。
    # 挂载Ubuntu安装镜像为虚拟光驱
    resource "ilo_virtual_media" "ubuntu_iso" {
      image_url  = "http://${var.local_pc_ip}:8080/${var.ubuntu_iso_filename}"
      media_type = "CD"
      inserted   = true
    }
    
    # 配置单次从虚拟光驱启动
    resource "ilo_boot_settings" "boot_from_cd" {
      boot_order                     = ["CD", "HDD", "PXE"]
      boot_source_override_enabled   = true
      boot_source_override_target    = "CD"
      boot_source_override_mode      = "UEFI" # 根据服务器实际启动模式调整为Legacy
      depends_on                     = [ilo_virtual_media.ubuntu_iso]
    }
    
    # 重启服务器触发安装流程
    resource "ilo_power" "server_restart" {
      power_state = "Reset"
      depends_on  = [ilo_boot_settings.boot_from_cd]
    }
    
  3. 执行terraform apply触发流程,安装完成后可通过null_resource配合连通性检测逻辑,执行虚拟介质卸载、启动顺序还原的收尾操作。

注意事项

  • 自动应答文件是自动化成功的核心:Ubuntu 20.04之后废弃了传统preseed机制,必须使用符合subiquity规范的autoinstall配置,配置完成后可以先在虚拟机测试一次,确认无交互步骤再用于物理服务器安装
  • iLO版本适配:iLO4及更早的老版本固件不支持直接挂载HTTP地址的虚拟镜像,需要先将ISO上传到iLO内置的虚拟介质存储后再挂载
  • 安全注意:临时启动的HTTP服务仅绑定iLO管理网段的IP,不要暴露到公网或业务网段,避免非授权访问
  • 排障方式:如果安装流程卡住,可以直接通过iLO内置的HTML5 KVM控制台查看安装界面报错,不需要到机房接物理显示器

内容的提问来源于stack exchange,提问作者Sticky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:57:33