Red Hat Training

A Red Hat training course is available for RHEL 8

第 10 章 使用镜像构建器准备并上传云镜像

镜像构建器可以创建自定义系统镜像,以便在各种云平台上使用。要在云中使用自定义的 RHEL 系统镜像,请使用镜像构建器使用相应的输出类型创建系统镜像,配置您的系统以上传镜像,并将镜像上传到您的云帐户。您可以在 RHEL web 控制台中通过 image builder 应用程序将自定义镜像推送到云,作为我们支持的服务提供商的子集提供,如 AWSMicrosoft Azure 云。请参阅 将镜像推送到 AWS Cloud AMI将 VHD 镜像推送到 Microsoft Azure 云

10.1. 准备上传 AWS AMI 镜像

在上传 AWS AMI 镜像前,您必须配置系统来上传镜像。

先决条件

流程

  1. 安装 Python 3 和 pip 工具:

    # yum install python3
    # yum install python3-pip
  2. 使用 pip 安装 AWS 命令行工具

    # pip3 install awscli
  3. 运行以下命令设定您的配置集。终端提示您提供凭证、地区和输出格式:

    $ aws configure
    AWS Access Key ID [None]:
    AWS Secret Access Key [None]:
    Default region name [None]:
    Default output format [None]:
  4. 为存储桶定义名称,并使用以下命令创建存储桶:

    $ BUCKET=bucketname
    $ aws s3 mb s3://$BUCKET

    使用实际存储桶名称替换 bucketname。它必须是全局唯一的名称。因此,您的存储桶会被创建。

  5. 要授予访问 S3 存储桶的权限,如果您还没有这样做,请在 AWS Identity and Access Management (IAM) 中创建一个 vmimport S3 角色:

    $ printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.json
    $ printf '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::%s", "arn:aws:s3:::%s/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }' $BUCKET $BUCKET > role-policy.json
    $ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
    $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json