附录 C. 完整的磁盘镜像
主要的 overcloud 镜像是一个平面分区镜像。这表示镜像本身不包含分区信息或引导加载程序。director 在引导时使用单独的内核和 ramdisk,在将 overcloud 镜像写入磁盘时创建一个基本的分区布局。但是,您可以创建包含分区布局、引导加载程序和强化安全防护的完整磁盘镜像。
以下过程会使用 director 的镜像构建功能。红帽只支持按照本节中所含的准则来构建的镜像。未按这些规范构建的自定义镜像不受支持。
安全强化型镜像会为注重安全性的 Red Hat OpenStack Platform 部署额外采取必要的安全措施。以下是与安全镜像有关的一些建议:
-
/tmp目录会挂载到独立的卷或分区上,并包含rw、nosuid、nodev、noexec和relatime标志 -
/var、/var/log和/var/log/audit目录会挂载到独立的卷或分区上,并包含rw、relatime标志 -
/home目录会挂载到独立的分区或卷上,并包含rw、nodev、relatime标志 对
GRUB_CMDLINE_LINUX设置做出以下更改:-
通过添加
audit=1纳入额外的内核引导标志,以启用审计 -
通过添加
nousb,禁用对于使用引导加载程序配置的 USB 的内核支持 -
通过设置
crashkernel=auto,删除不安全的引导标志
-
通过添加
-
将不安全的模块(
usb-storage、cramfs、freevxfs、jffs2、hfs、hfsplus、squashfs、udf、vfat)加入黑名单,并阻止它们加载。 -
在不安全的软件包(由
kexec-tools安装的kdump以及telnet)完成默认安装后,将其从镜像中全部删除 -
添加新的
screen软件包,以确保安全性
要构建安全强化型镜像,您需要:
- 下载基础 Red Hat Enterprise Linux 7 镜像
- 设置专门用于注册的环境变量
- 通过修改分区的模式和大小来自定义镜像
- 创建镜像
- 将其上传到您的部署中
以下几节详细介绍了用于归档这些任务的操作过程。
C.1. 下载基础云镜像
在构建完整的磁盘镜像之前,需要先下载 Red Hat Enterprise Linux 的现有云镜像,以作为基础。请前往红帽客户门户网站,然后选择要下载的 KVM 客户机镜像。例如,可在以下页面上找到最新 Red Hat Enterprise Linux 的 KVM 客户机镜像:
C.2. 设置环境变量
在构建完整磁盘镜像的过程中,director 需要基础镜像和注册详情,以获取新 overcloud 镜像的软件包。您可以使用 Linux 环境变量来进行相关的定义。
镜像构建过程会利用红帽订阅暂时注册镜像,并在完成构建后取消注册系统。
要构建安全强化型完整磁盘镜像,请根据您的环境和要求来设置 Linux 环境变量:
- DIB_LOCAL_IMAGE
- 设置本地镜像,以将其用作基础。
- REG_ACTIVATION_KEY
- 在注册过程中使用激活密钥。
- REG_AUTO_ATTACH
- 定义是否自动附加兼容性最高的订阅。
- REG_BASE_URL
-
用于获取软件包的内容交付服务器的基本 URL。默认的客户门户网站订阅管理(Subscription Management)会使用
https://cdn.redhat.com。如果使用的是 Red Hat Satellite 6 服务器,这个参数则应使用 Satellite 服务器的基本 URL。 - REG_ENVIRONMENT
- 注册到机构的内部环境中。
- REG_METHOD
-
设置注册方法。使用
portal可将系统注册到红帽客户门户网站。使用satellite可将系统注册到 Red Hat Satellite 6。 - REG_ORG
- 要注册镜像的机构。
- REG_POOL_ID
- 产品订阅信息的池 ID。
- REG_PASSWORD
- 注册镜像的用户帐户的密码。
- REG_REPOS
一个由软件仓库名称组成的字符串,使用逗号分隔(不含空格)。这个字符串中的各个软件仓库会通过
subscription-manager启用。对于安全强化型完整磁盘镜像,请使用以下软件仓库:-
rhel-7-server-rpms -
rhel-7-server-extras-rpms -
rhel-ha-for-rhel-7-server-rpms -
rhel-7-server-optional-rpms -
rhel-7-server-openstack-13-rpms
-
- REG_SERVER_URL
-
指定要使用的订阅服务的主机名。默认值是红帽客户门户网站(其网址为
subscription.rhn.redhat.com)。如果使用的是 Red Hat Satellite 6 服务器,则该参数应使用 Satellite 服务器的主机名。 - REG_USER
- 为注册镜像的帐户指定用户名。
以下是一些用于导出一组环境变量以将本地 QCOW2 镜像暂时注册到红帽客户门户网站的命令示例。
$ export DIB_LOCAL_IMAGE=./rhel-server-7.5-x86_64-kvm.qcow2
$ export REG_METHOD=portal
$ export REG_USER="[your username]"
$ export REG_PASSWORD="[your password]"
$ export REG_REPOS="rhel-7-server-rpms \
rhel-7-server-extras-rpms \
rhel-ha-for-rhel-7-server-rpms \
rhel-7-server-optional-rpms \
rhel-7-server-openstack-13-rpms"C.3. 自定义磁盘布局
安全强化型镜像的默认大小为 20G,并会使用预定义的分区大小。但是,为了可以使其适用于 overcloud 容器镜像,需要对分区布局进行一些修改:
| 分区 | 原有大小 | 现有大小 |
|---|---|---|
|
|
6G |
8G |
|
|
1G |
1G |
|
|
7G |
10G |
|
|
5G |
5G |
|
|
900M |
900M |
|
|
100M |
100M |
|
总计 |
20G |
25G |
这会将镜像大小增加至 25G。您还可以根据自身需求,进一步修改分区布局和磁盘大小。
要修改分区布局和磁盘大小,请按照以下步骤操作:
-
使用
DIB_BLOCK_DEVICE_CONFIG环境变量修改分区模式。 -
通过更新
DIB_IMAGE_SIZE环境变量,来修改镜像的整体大小。
C.3.1. 修改分区模式
您可以修改分区模式,以更改分区大小、创建新分区或删除现有分区。您可以使用以下环境变量来定义新的分区模式:
$ export DIB_BLOCK_DEVICE_CONFIG='<yaml_schema_with_partitions>'
以下 YAML 结构展示了修改后的分区布局,该布局拥有足够的空间,可拉取 overcloud 容器镜像:
export DIB_BLOCK_DEVICE_CONFIG='''
- local_loop:
name: image0
- partitioning:
base: image0
label: mbr
partitions:
- name: root
flags: [ boot,primary ]
size: 8G
mkfs:
type: xfs
label: "img-rootfs"
mount:
mount_point: /
fstab:
options: "rw,relatime"
fck-passno: 1
- name: tmp
size: 1G
mkfs:
type: xfs
mount:
mount_point: /tmp
fstab:
options: "rw,nosuid,nodev,noexec,relatime"
- name: var
size: 10G
mkfs:
type: xfs
mount:
mount_point: /var
fstab:
options: "rw,relatime"
- name: log
size: 5G
mkfs:
type: xfs
mount:
mount_point: /var/log
fstab:
options: "rw,relatime"
- name: audit
size: 900M
mkfs:
type: xfs
mount:
mount_point: /var/log/audit
fstab:
options: "rw,relatime"
- name: home
size: 100M
mkfs:
type: xfs
mount:
mount_point: /home
fstab:
options: "rw,nodev,relatime"
'''请基于这个 YAML 内容来修改您的镜像分区模式,并根据您的自身需求来修改分区的大小和布局。
请为镜像定义适合的分区大小,因为完成部署后无法再调整分区大小。
C.3.2. 修改镜像大小
修改后的分区模式的空间总量可能会超出默认的磁盘大小 (20G)。在这种情况下,您可能需要修改镜像的大小。要修改镜像大小,请编辑用于创建镜像的配置文件。
为 /usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images.yaml 创建一个副本:
# cp /usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images.yaml \ /home/stack/overcloud-hardened-images-custom.yaml
编辑配置文件中的 DIB_IMAGE_SIZE,以便按需调整相应的值:
...
environment:
DIB_PYTHON_VERSION: '2'
DIB_MODPROBE_BLACKLIST: 'usb-storage cramfs freevxfs jffs2 hfs hfsplus squashfs udf vfat bluetooth'
DIB_BOOTLOADER_DEFAULT_CMDLINE: 'nofb nomodeset vga=normal console=tty0 console=ttyS0,115200 audit=1 nousb'
DIB_IMAGE_SIZE: '25' 1
COMPRESS_IMAGE: '1'- 1
- 将该值调整为新的磁盘空间总量。
保存这个文件。
director 在部署 overcloud 时会为 overcloud 镜像创建一个 RAW 版本。这意味着,您的 undercloud 必须拥有一定的可用空间,以容纳这个 RAW 镜像。例如,如果您将安全强化型镜像大小增加到 40G,则 undercloud 的硬盘上必须拥有 40G 的可用空间。
C.4. 创建安全强化型完整磁盘镜像
在完成环境变量设置和镜像自定义后,请使用 openstack overcloud image build 命令创建镜像:
# openstack overcloud image build \
--image-name overcloud-hardened-full \
--config-file /home/stack/overcloud-hardened-images-custom.yaml \ 1
--config-file /usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images-rhel7.yaml- 1
- 这是一个自定义配置文件,采用了第 C.3.2 节 “修改镜像大小”中确定的新磁盘大小。如果您未将磁盘大小自定义为其他值,请改用原来的
/usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images.yaml文件。
这会创建一个名为 overcloud-hardened-full.qcow2 的镜像,其中包含所有必要的安全功能。
C.5. 上传安全强化型完整磁盘镜像
将镜像上传至 OpenStack Image (glance) 服务,并通过 Red Hat OpenStack Platform director 开始使用该镜像。要上传安全强化型镜像,请按照以下步骤操作:
重命名新生成的镜像,并将其移到您的镜像目录中:
# mv overcloud-hardened-full.qcow2 ~/images/overcloud-full.qcow2
删除所有旧的 overcloud 镜像:
# openstack image delete overcloud-full # openstack image delete overcloud-full-initrd # openstack image delete overcloud-full-vmlinuz
上传新的 overcloud 镜像:
# openstack overcloud image upload --image-path /home/stack/images --whole-disk
如果您想将某个现有镜像替换成安全强化型镜像,请使用 --update-existing 标志。这样,原有的 overcloud-full 镜像就会被新生成的安全强化型镜像覆盖。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.