Skip to content

Latest commit

 

History

History
131 lines (83 loc) · 4.46 KB

openeuler-hwcloud.md

File metadata and controls

131 lines (83 loc) · 4.46 KB

openEuler Huawei Cloud

使用 euler-packer 项目的脚本为 华为云 构建 openEuler 镜像。

本仓库的脚本会在 华东-上海一 区生成供鲲鹏 CPU 使用的 ARM64 架构的镜像。

可通过修改 openeuler/hwcloud/ 目录下的 Packer 配置文件指定镜像的生成区域。

构建流程

euler-packer 脚本构建 openEuler 华为云镜像的流程如下:

  1. 构建本地基础镜像 (base-image)

    1. 下载 openEuler qcow2 格式的虚拟机镜像至本地。
    2. 使用 qemu-nbd 将 qcow2 格式的虚拟机镜像分区加载至系统,将总大小为 40G 的磁盘分区调整为 8G。
  2. 构建基础云镜像 (base-hwcloud)

    1. 使用 obsutil 将缩容后的镜像上传至华为云 OBS 存储桶。
    2. 使用 IMS 镜像服务 将存储桶中存储的 qcow2 镜像制作基础云镜像。
  3. 使用 Packer 构建云镜像

    1. 使用 Packer 启动 “基础云镜像” 虚拟机实例。
    2. 在虚拟机中安装 cloud-init 等基础软件包,调整内核参数,删除 root 密码等。
    3. 最终将此虚拟机的磁盘制作最终可供使用的云镜像 (openEuler-<VERSION>-<ARCH>-hvm-<DATETIME>)。

准备工作

  1. Linux 系统

    在构建镜像的过程中,需要使用 qemu-nbd 将 qcow2 格式的镜像的分区表加载至系统中,之后对根分区进行缩容和分区表调整,因此 euler-packer 的脚本仅支持在 Linux 系统上运行。

    本仓库的脚本使用系统 Debian 12

  2. 安装依赖

    安装运行脚本所需的依赖:docker, awscli, jq, qemu-utils, partprobe (parted), packer, fdisk, obsutil

    # Ubuntu
    sudo apt install awscli jq qemu-utils parted fdisk util-linux

    请按照 官方教程 安装 Packer。

    安装 huaweicloud packer 依赖。

    packer plugins install github.com/huaweicloud/huaweicloud

    安装 obsutil 的教程请参考 OBS 简介

  3. 初始化 obsutil

    设定 obsutil 的默认 endpoint 为 cn-east-3 (华东-上海一区)。

    obsutil config -i=<AK> -k=<SK> -e=obs.cn-east-3.myhuaweicloud.com

    可使用 obsutil ls 检查是否配置成功。

  4. 设定华为云 AccessKey 环境变量:

    export HW_ACCESS_KEY=<AccessKey ID>
    export HW_SECRET_KEY=<AccessKey Secret>
  5. 建立 OBS 存储桶,用于储存 qcow2 镜像。

  6. 克隆此仓库代码

    git clone https://github.com/cnrancher/euler-packer.git && cd euler-packer
  7. 其他

    构建镜像时,脚本会使用 date +"%Y%m%d" 获取时间为镜像命名,因此请确保运行此脚本的系统时间和时区设置正确。

构建华为云镜像

  1. 构建 qcow2 格式的基础镜像并上传至华为云 OBS 存储桶。

    ./openeuler.sh \
        --hwcloud-base \
        --version 24.03-LTS \
        --arch aarch64 \
        --obs-bucket <BUCKET_NAME>

    执行脚本的参数:

    • --version: openEuler 版本号(必须
    • --arch: 系统架构,默认为 aarch64,目前仅支持 aarch64 架构
    • --obs-bucket: 华为云 OBS 存储桶名称
  2. 手动在华为云 IMS 镜像服务 页面创建基础云镜像。

    为了保持统一,将基础云镜像的名称格式设定为:DEV-openEuler-<VERSION>-<ARCH>-<DATETIME>-BASE

  3. 参照 华为云文档 - 使用Packer创建私有镜像 设定下方参数,执行脚本,使用 Packer 构建华为云镜像。

    #!/bin/bash
    
    ./openeuler.sh \
        --hwcloud \
        --version 24.03-LTS \
        --arch aarch64 \
        --vpc <VPC_ID> \
        --subnet <SUBNET_ID> \
        --source <BASE_IMAGE_ID>

最终构建的 AMI 镜像可于 IMS 镜像服务 页面获取到,命名格式为:openEuler-<VERSION>-<ARCH>-<DATETIME>

其他

openEuler 一键安装高版本 Docker 脚本 scripts/others/install-docker.sh