第 4 章 配置 hook


使用配置 hook 将您自己的自定义配置功能注入 overcloud 部署过程中。您可以创建 hook 在主 overcloud 服务配置之前和之后注入自定义配置,以及用于修改和包含基于 Puppet 的配置的 hook。

4.1. 第一次引导:自定义第一次引导配置

director 使用 cloud-init 在初始创建 overcloud 后在所有节点上执行配置。您可以使用 NodeUserData 资源类型调用 cloud-init

OS::TripleO::NodeUserData
应用到所有节点的 cloud-init 配置。
OS::TripleO::Controller::NodeUserData
应用到 Controller 节点的 cloud-init 配置。
OS::TripleO::Compute::NodeUserData
应用到 Compute 节点的 cloud-init 配置。
OS::TripleO::CephStorage::NodeUserData
应用到 Ceph Storage 节点的 cloud-init 配置。
OS::TripleO::ObjectStorage::NodeUserData
应用到 Object Storage 节点的 cloud-init 配置。
OS::TripleO::BlockStorage::NodeUserData
应用到块存储节点的 cloud-init 配置。
OS::TripleO::[ROLE]::NodeUserData
应用到自定义节点的 cloud-init 配置。将 [ROLE] 替换为可组合角色名称。

在本例中,使用所有节点上的自定义 IP 地址更新名称服务器:

流程

  1. 创建一个基本的 heat 模板 ~/templates/nameserver.yaml,它将运行脚本,以在每个节点上附加带有特定名称服务器的 resolv.conf 文件。您可以使用 OS::TripleO::MultipartMime 资源类型来发送配置脚本。

    heat_template_version: 2014-10-16
    
    description: >
      Extra hostname configuration
    
    resources:
      userdata:
        type: OS::Heat::MultipartMime
        properties:
          parts:
          - config: {get_resource: nameserver_config}
    
      nameserver_config:
        type: OS::Heat::SoftwareConfig
        properties:
          config: |
            #!/bin/bash
            echo "nameserver 192.168.1.1" >> /etc/resolv.conf
    
    outputs:
      OS::stack_id:
        value: {get_resource: userdata}
    Copy to Clipboard Toggle word wrap
  2. 创建一个环境文件 ~/templates/firstboot.yaml,它将 heat 模板注册为 OS::TripleO::NodeUserData 资源类型。

    resource_registry:
      OS::TripleO::NodeUserData: /home/stack/templates/nameserver.yaml
    Copy to Clipboard Toggle word wrap
  3. 要在 overcloud 中添加第一次引导配置,请将环境文件添加到堆栈中,以及其他环境文件:

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

    这会在首次创建和第一次引导时将配置添加到所有节点中。后续包含这些模板(如更新 overcloud 堆栈)不会运行这些脚本。

重要

您只能将 NodeUserData 资源注册到每个资源的一个 heat 模板中。后续用法会覆盖要使用的 heat 模板。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat