启用配置驱动 (configdrive)

Bare Metal 服务支持向实例暴露配置驱动镜像。

配置驱动用于存储特定于实例的元数据,并以标记为 config-2 的磁盘分区形式呈现给实例。配置驱动的最大大小为 64MB。使用配置驱动的一个用例是在不使用 DHCP 为实例分配 IP 地址时暴露网络配置。

配置驱动通常与 Compute 服务一起使用,但 Bare Metal 服务也提供了一种独立的使用方式。以下章节将介绍这两种方法。

与 Compute 服务一起使用

要为特定请求启用配置驱动,请将 --config-drive true 参数传递给 nova boot 命令,例如

openstack server create --use-config-drive --flavor baremetal --image test-image instance-1

也可以通过在 /etc/nova/nova.conf 文件中设置以下选项来配置 OpenStack Compute 服务,从而自动在所有实例上启用配置驱动,例如

[DEFAULT]
...

force_config_drive=True

在某些情况下,您可能希望在部署实例时传递用户自定义脚本。为此,请将 --user-data /path/to/file 传递给 nova boot 命令。

独立使用

当不使用 Compute 服务时,操作员需要创建一个配置驱动,并向 Bare Metal 服务提供文件或 HTTP URL。有关详细信息,请参阅 使用 config drive 部署

对象存储中的配置驱动存储

在正常情况下,当大小小于 64KB 时,配置驱动可以存储在 Bare Metal 服务中。可选地,如果大小大于 64KB,则支持将其存储在 swift 端点中。Swift 和 radosgw 都使用 swift 样式的 API。

以下选项在 /etc/ironic/ironic.conf 中启用 swift 作为对象存储后端来存储 config drive。这使用 Identity 服务在 Bare Metal 服务和对象存储服务之间建立会话。

[deploy]
...

configdrive_use_object_store = True

要启用 radosgw,请在 /etc/ironic/ironic.conf 中使用以下选项。由于 radosgw 不会使用 Identity 服务,而是依赖 radosgw 的用户名和密码身份验证,因此 swift 部分中的凭据是必需的。

[deploy]
...

configdrive_use_object_store = True

[swift]
...

username = USERNAME
password = PASSWORD
auth_url = http://RADOSGW_IP:8000/auth/v1

如果正在使用 直接部署,请编辑 /etc/glance/glance-api.conf 以将实例镜像存储在相应的对象存储(radosgw 或 swift)中

[glance_store]
...

swift_store_user = USERNAME
swift_store_key = PASSWORD
swift_store_auth_address = http://RADOSGW_OR_SWIFT_IP:PORT/auth/v1

访问配置驱动数据

当启用配置驱动时,Bare Metal 服务将在实例磁盘上创建一个分区,并将配置驱动镜像写入其中。必须在实际使用之前挂载配置驱动。许多工具(例如 cloud-init 和 cloudbase-init)会自动执行此操作。要在支持通过标签访问设备的 Linux 发行版上手动挂载它,只需运行以下命令

mkdir -p /mnt/config
mount /dev/disk/by-label/config-2 /mnt/config

如果访客操作系统不支持通过标签访问设备,则可以使用其他工具(例如 blkid)来识别与配置驱动对应的设备并挂载它,例如

CONFIG_DEV=$(blkid -t LABEL="config-2" -odevice)
mkdir -p /mnt/config
mount $CONFIG_DEV /mnt/config

Cloud-init 集成

配置驱动在与 cloud-init 一起使用时特别有用,但为了使用它,我们应该遵循一些规则

  • Cloud-init 数据应组织成 预期的格式

  • 由于 Bare Metal 服务使用磁盘分区作为配置驱动,因此它仅适用于 cloud-init 版本 >= 0.7.5

  • Cloud-init 具有数据源模块的集合,因此在通过 disk-image-builder 构建镜像时,我们必须定义 DIB_CLOUD_INIT_DATASOURCES 环境变量并设置适当的源以启用配置驱动,例如

    DIB_CLOUD_INIT_DATASOURCES="ConfigDrive, OpenStack" disk-image-create -o fedora-cloud-image fedora baremetal
    

    有关更多信息,请参阅 如何配置 cloud-init 数据源