5.3. 在第一次引导时自定义配置


director 提供了在 overcloud 初始创建后在所有节点上执行配置的机制。director 通过 cloud-init 达到此目的,您可以使用 OS::TripleO::NodeUserData 资源类型调用它。

在本例中,我们的目标是使用所有节点上的自定义 IP 地址更新名称服务器。我们首先创建一个基本的 Heat 模板(nameserver.yaml),它将运行脚本来附加带有特定名称服务器的 resolv.conf。我们使用 OS::TripleO::MultipartMime 资源类型发送配置脚本。

heat_template_version: 2014-10-16

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/resolve.conf

outputs:
  OS::stack_id:
    value: {get_resource: userdata}
Copy to Clipboard Toggle word wrap

接下来,创建一个环境文件(firstboot.yaml),它将我们的 Heat 模板注册为 OS::TripleO::NodeUserData 资源类型。

resource_registry:
  OS::TripleO::NodeUserData: nameserver.yaml
Copy to Clipboard Toggle word wrap

这可实现以下目标:

  1. OS::TripleO::NodeUserData 是集合中的其他模板中使用的基于 director 的 Heat 资源,并将第一次引导配置应用到所有节点。此资源传递在 cloud-init 中使用的数据。默认 NodeUserData 是指生成空白值的 Heat 模板(firstboot/userdata_default.yaml)。在我们的 firstboot.yaml 环境文件中,我们的 firstboot.yaml 环境文件会替换为对我们自己的 nameserver.yaml 文件的引用。
  2. nameserver_config 定义要在第一次引导时运行的 Bash 脚本。OS::Heat::SoftwareConfig 资源将它定义为要应用的配置片段。
  3. userData 使用 OS::Heat::MultipartMime 资源将来自 nameserver_config 的配置转换为多部分 MIME 消息。
  4. 输出提供了一个输出 参数 OS::stack_id,它取了来自 userdata 的 MIME 消息并将其提供给调用它的 Heat 模板/资源。

因此,每个节点在第一次引导时都运行以下 Bash 脚本:

#!/bin/bash
echo "nameserver 192.168.1.1" >> /etc/resolve.conf
Copy to Clipboard Toggle word wrap

本例演示了 Heat 模板如何从一个资源向另一个资源传递和 modfy 配置。它还介绍了如何使用环境文件注册新的 Heat 资源或修改现有 Heat 资源。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat