4.2. pre-Configuration:自定义特定 Overcloud 角色


重要

本文档的早期版本使用 OS::TripleO::Tasks::*PreConfig 资源为每个角色提供预配置 hook。director 的 Heat 模板集合需要专门使用这些 hook,这意味着您不应将它们用于自定义用途。而是应使用下面概述的 OS::TripleO::*ExtraConfigPre hook。

Overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组 hook,用于在第一次引导完成后和内核配置开始前为特定节点角色提供自定义配置。这些 hook 包括:

OS::TripleO::ControllerExtraConfigPre
在 Puppet 核心配置前,应用到 Controller 节点的额外配置。
OS::TripleO::ComputeExtraConfigPre
在 Puppet 核心配置之前,应用到 Compute 节点的额外配置。
OS::TripleO::CephStorageExtraConfigPre
在 Puppet 核心配置之前,应用到 Ceph Storage 节点的额外配置。
OS::TripleO::ObjectStorageExtraConfigPre
在 Puppet 核心配置之前,应用到对象存储节点的其他配置。
OS::TripleO::BlockStorageExtraConfigPre
在 Puppet 核心配置之前,应用到块存储节点的额外配置。
OS::TripleO::[ROLE]ExtraConfigPre
在 Puppet 核心配置之前,应用到自定义节点的其他配置。将 [ROLE] 替换为可组合角色名称。

在本例中,您首先创建一个基本的 heat 模板(/home/stack/templates/nameserver.yaml),该脚本使用变量 nameserver 写入节点的 resolv.conf

heat_template_version: 2014-10-16

description: >
  Extra hostname configuration

parameters:
  server:
    type: string
  nameserver_ip:
    type: string
  DeployIdentifier:
    type: string

resources:
  CustomExtraConfigPre:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" > /etc/resolv.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}

  CustomExtraDeploymentPre:
    type: OS::Heat::SoftwareDeployment
    properties:
      server: {get_param: server}
      config: {get_resource: CustomExtraConfigPre}
      actions: ['CREATE','UPDATE']
      input_values:
        deploy_identifier: {get_param: DeployIdentifier}

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger pre-deploy on changes
    value: {get_attr: [CustomExtraDeploymentPre, deploy_stdout]}
Copy to Clipboard Toggle word wrap

在本例中,resource 部分包含以下内容:

CustomExtraConfigPre
它定义了一个软件配置。在本例中,我们定义 Bash 脚本,而 Heat 会将 _NAMESERVER_IP_ 替换为存储在 nameserver_ip 参数中的值。
CustomExtraDeploymentPre

这会执行一个软件配置,这是来自 CustomExtraConfigPre 资源的软件配置。注意以下几点:

  • 配置参数CustomExtraConfigPre 资源的引用,以便 Heat 知道要应用的配置。
  • server 参数检索 Overcloud 节点的映射。此参数由父模板提供,并在此 hook 模板中是强制的。
  • actions 参数定义要应用配置的时间。在这种情况下,我们仅在创建 Overcloud 时应用配置。可能的操作包括 CREATEUPDATEDELETESUSPENDRESUME
  • input_values 包含一个名为 deploy_identifier 的参数,它将从父模板存储 DeployIdentifier。此参数为每个部署更新的资源提供时间戳。这可确保后续 overcloud 更新上的资源获取。

接下来,创建一个环境文件(/home/stack/templates/pre_config.yaml),将 heat 模板注册到基于角色的资源类型。例如,要只应用到 Controller 节点,请使用 ControllerExtraConfigPre hook:

resource_registry:
  OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml

parameter_defaults:
  nameserver_ip: 192.168.1.1
Copy to Clipboard Toggle word wrap

若要应用配置,可在创建或更新 Overcloud 时将环境文件添加到堆栈中,以及其他环境文件。例如:

$ openstack overcloud deploy --templates \
    ...
    -e /home/stack/templates/pre_config.yaml \
    ...
Copy to Clipboard Toggle word wrap

这会在内核配置从初始 Overcloud 创建或后续更新开始前,将配置应用到所有 Controller 节点。

重要

您只能为每个 hook 只将一个 Heat 模板注册到一个 Heat 模板。后续用法会覆盖要使用的 Heat 模板。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat