4.2. 预配置:自定义特定的 overcloud 角色


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

重要

本文档的早期版本使用 OS::TripleO::Tasks:: thePreConfig 资源来基于每个角色提供预配置 hook。heat 模板集合需要专用使用这些 hook,这意味着您不应该使用它们进行自定义。取而代之,请使用此处概述的 OS::TripleO::114ExtraConfigPre hook。

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

在本例中,将 resolv.conf 文件附加到特定角色的所有节点上,并带有一个变量名称服务器:

流程

  1. 创建一个基本的 heat 模板 ~/templates/nameserver.yaml,该脚本将变量名称服务器写入节点的 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 资源的软件配置。注意以下几点:

    • config 参数会引用 CustomExtraConfigPre 资源,以便 heat 知道要应用的配置。
    • server 参数检索 overcloud 节点的映射。此参数由父模板提供,这是此 hook 模板中强制的。
    • actions 参数定义何时应用配置。在本例中,您希望在创建 overcloud 时应用配置。可能的操作包括 CREATEUPDATEDELETESUSPENDRESUME
    • input_values 包含一个名为 deploy_identifier 的参数,它存储父模板的 DeployIdentifier。此参数为每个部署更新提供资源的时间戳,以确保后续 overcloud 更新的资源获取。
  2. 创建一个环境文件 ~/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
  3. 将环境文件添加到堆栈中,以及其他环境文件:

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

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

重要

您可以为每个 hook 将每个资源注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat