4.3. pre-Configuration:自定义所有 Overcloud 角色


Overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一个 hook,用于在第一次引导完成后配置所有节点类型,并在内核配置开始前配置:

OS::TripleO::NodeExtraConfig
在 Puppet 核心配置之前,应用到所有节点角色的额外配置。

在本例中,您首先创建一个基本的 heat 模板(/home/stack/templates/nameserver.yaml),该脚本会运行脚本来附加每个节点的 resolv.conf 及变量 nameserver。

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 模板注册为 OS::TripleO::NodeExtraConfig 资源类型。

resource_registry:
  OS::TripleO::NodeExtraConfig: /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 创建或后续更新之前,将配置应用到所有节点。

重要

您只能将 OS::TripleO::NodeExtraConfig 注册到一个 Heat 模板。后续用法会覆盖要使用的 Heat 模板。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat