搜索

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

download PDF

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

10.1. 准备 AMI 镜像,并将其上传到 AWS

您可以创建自定义镜像,并使用 RHEL 镜像构建器,手动或自动将其更新到 AWS 云。

10.1.1. 准备手动上传 AWS AMI 镜像

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

前提条件

流程

  1. 安装 Python 3 和 pip 工具:

    # dnf install python3 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 角色:

    1. 创建一个 JSON 格式的带有信任策略配置的 trust-policy.json 文件。例如:

      {
          "Version": "2022-10-17",
          "Statement": [{
              "Effect": "Allow",
              "Principal": {
                  "Service": "vmie.amazonaws.com"
              },
              "Action": "sts:AssumeRole",
              "Condition": {
                  "StringEquals": {
                      "sts:Externalid": "vmimport"
                  }
              }
          }]
      }
    2. 创建一个 JSON 格式的带有角色策略配置的 role-policy.json 文件。例如:

      {
          "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
    3. 使用 trust-policy.json 文件为您的 Amazon Web Services 帐户创建一个角色:

      $ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
    4. 使用 role-policy.json 文件嵌入一个内联策略文档:

      $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

10.1.2. 使用 CLI 手动将 AMI 镜像上传到 AWS

您可以使用 RHEL 镜像构建器构建 ami 镜像,并使用 CLI 手动将它们直接上传到 Amazon AWS Cloud 服务提供商。

前提条件

  • 您已在 AWS IAM 账号管理器中配置了一个 Access Key ID
  • 您已准备好了一个可写的 S3 存储桶
  • 您有一个定义的蓝图。

流程

  1. 使用文本编辑器,使用以下内容创建配置文件:

    provider = "aws"
    [settings]
    accessKeyID = "AWS_ACCESS_KEY_ID"
    secretAccessKey = "AWS_SECRET_ACCESS_KEY"
    bucket = "AWS_BUCKET"
    region = "AWS_REGION"
    key = "IMAGE_KEY"

    将字段中的值替换为您的 accessKeyIDsecretAccessKeybucketregion 的凭证。IMAGE_KEY 值是要上传到 EC2 的虚拟机镜像的名称。

  2. 将文件保存为 CONFIGURATION-FILE.toml,然后关闭文本编辑器。
  3. 启动 compose 来将其上传到 AWS:

    # composer-cli compose start blueprint-name image-type image-key configuration-file.toml

    替换:

    • 使用您创建的蓝图名称替换 blueprint-name
    • 使用 ami 镜像类型替换 image-type
    • 使用要上传到 EC2 的虚拟机镜像的名称替换 image-key
    • 带有云提供商的配置文件名称的 configuration-file.toml。

      注意

      您必须有要将自定义镜像发送到的存储桶的正确 AWS 身份和访问管理(IAM)设置。在将镜像上传到存储桶前,您必须对存储桶设置策略。

  4. 检查镜像构建的状态:

    # composer-cli compose status

    完成镜像上传过程后,您可以看到"FINISHED"状态。

验证

要确认镜像上传成功:

  1. 访问菜单中的 EC2,并在 AWS 控制台中选择正确的区域。镜像必须具有 available 状态,以指示它已被成功上传。
  2. 在仪表盘上,选择您的镜像并点击 Launch

10.1.3. 创建镜像并自动将其上传到 AWS Cloud AMI

您可以使用 RHEL 镜像构建器创建 (.raw) 镜像,并选择 Upload to AWS 复选框,自动将您创建的输出镜像直接推送到 Amazon AWS Cloud AMI 服务提供商。

前提条件

流程

  1. 在 RHEL 镜像构建器仪表盘中,点之前创建的 blueprint name
  2. 选择选项卡 Images
  3. 单击 Create Image 来创建自定义镜像。

    Create Image 窗口打开。

    1. Type 下拉菜单中选择 Amazon Machine Image Disk (.raw)
    2. 选中 Upload to AWS 复选框,将您的镜像上传到 AWS 云,然后点 Next
    3. 要验证您是否可以访问 AWS ,请在对应的字段中输入您的"AWS access key ID""AWS secret access key"。点 Next

      注意

      您只能在创建新 Access Key ID 时查看 AWS secret access key 。如果您不知道您的 Secret Key,请生成一个新的 Access Key ID。

    4. Image name 字段中输入镜像名称,在 Amazon S3 bucket name 字段中输入 Amazon bucket 名称,并为您要添加自定义镜像的存储桶输入 AWS region 字段。点 Next
    5. 查看信息并点 Finish

      可选,点 Back 来修改任何不正确的详情。

      注意

      您必须具有要发送自定义镜像的存储桶的正确 IAM 设置。此流程使用 IAM 导入和导出,因此您必须在将镜像上传到存储桶前为存储桶设置 策略。如需更多信息,请参阅 IAM 用户所需的权限

  4. 右上角的弹出窗口告诉您保存的进度。它还告知镜像创建过程、创建此镜像的过程以及后续的上传到 AWS Cloud。

    完成这个过程后,您可以看到 镜像构建完成状态。

  5. 在浏览器中,访问 Service→EC2

    1. 在 AWS 控制台仪表盘菜单中,选择 correct region。镜像必须具有 Available 状态,以指示它已被上传。
    2. 在 AWS 仪表盘上,选择您的镜像并点 Launch
  6. 此时会打开一个新窗口。根据启动镜像所需的资源选择实例类型。点 Review and Launch
  7. 查看您的实例启动详情。如果需要进行任何更改,您可以编辑任何部分。点 Launch
  8. 在启动实例之前,选择一个访问它的公钥。

    您可以使用您已有的密钥对,也可以创建一个新的密钥对。

    按照以下步骤在 EC2 中创建新的密钥对,并将它连接到新实例。

    1. 在下拉菜单中选择 "Create a new key pair"
    2. 输入新密钥对名称。它生成一个新的密钥对。
    3. "下载密钥对" 在您的本地系统中保存新密钥对。
  9. 然后,您可以点 Launch Instance 启动您的实例。

    您可以检查实例的状态,它显示为 Initializing

  10. 实例状态变为 running 后,连接按钮将变为可用。
  11. 连接。此时会出现一个窗口,其中包含有关如何使用 SSH 进行连接的说明。

    1. 选择 A standalone SSH client 作为首选连接方法并打开终端。
    2. 在您存储私钥的位置,确保您的密钥是公开可见的,以便 SSH 可以正常工作。要做到这一点,请运行以下命令:

      $ chmod 400 <_your-instance-name.pem_>
    3. 使用其公共 DNS 连接到您的实例:

      $ ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>
    4. 键入 yes 以确认您要继续连接。

      因此,您通过 SSH 连接到您的实例。

验证

  • 检查在使用 SSH 连接到您的实例的过程中是否能够执行任何操作。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.