第 8 章 创建自定义配置

在一些情况下,您可能会需要提供在您的 Red Hat Enterprise Linux OpenStack Platform 环境中集成的额外应用程序的配置。这个自定义配置需要在 Overcloud 堆栈中包括额外的 Heat 模板。本节介绍了您可以使用的自定义配置操作。

8.1. 首次引导时的配置

director 提供了一个在初始创建 Overcloud 时在所有节点上进行配置操作的机制。director 使用 cloud-init,您可以在其中调用使用 OS::TripleO::NodeUserData 资源类型。
在这个示例中,首先创建一个基本的 Heat 模板(/home/stack/templates/nameserver.yaml),它运行一个脚本来为每个节点的 resolv.conf 添加一个特定的名称解析服务器(nameserver)。我们使用 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}
接下来,创建一个环境文件(/home/stack/templates/firstboot.yaml),它把我们的 Heat 模板注册为 OS::TripleO::NodeUserData 资源类型。
resource_registry:
  OS::TripleO::NodeUserData: ~/templates/nameserver.yaml
为了添加首次引导时的配置,在首次创建 Overcloud 时把环境文件添加到堆栈中。例如:
$ openstack overcloud deploy --templates -e ~/templates/firstboot.yaml
其中的 -e 把环境文件添加到 Overcloud 堆栈。
在所有节点首次创建并首次引导时,这些配置会被添加到所有节点上。其后包括这些模板的操作(如更新 Overcloud 堆栈)将不再运行这些脚本。