Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

6.14. 自定义 Overcloud 的预配置

Overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组在第一次引导完成后,核心配置开始前,提供自定义配置的资源。这些资源包括:
OS::TripleO::ControllerExtraConfigPre
在核心 Puppet 配置前,应用到 Controller 节点上的额外配置。
OS::TripleO::ComputeExtraConfigPre
在核心 Puppet 配置前,应用到 Controller 节点上的额外配置。
OS::TripleO::CephStorageExtraConfigPre
在核心 Puppet 配置前,应用到 CephStorage 节点上的额外配置。
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

resources:
ExtraPreConfig:
  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}
ExtraPreDeployment:
  type: OS::Heat::SoftwareDeployment
  properties:
    config: {get_resource: ExtraPreConfig}
    server: {get_param: server}
    actions: ['CREATE','UPDATE']

outputs:
deploy_stdout:
  description: Deployment reference, used to trigger pre-deploy on changes
  value: {get_attr: [ExtraPreDeployment, deploy_stdout]}

重要

server 参数是应用配置的服务器列表,它由父模板提供。这个参数在所有预配置模板中都是必需的。
接下来,创建一个环境文件(/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
为了应用配置,在创建或更新 Overcloud 时把环境文件加入到栈。例如:
$ openstack overcloud deploy --templates -e /home/stack/templates/pre_config.yaml
这会在初始创建的主配置开始前,或以后的更新过程的主配置开始前,在所有节点中应用配置。

重要

您可以只把这些资源注册到一个 Heat 模板。以后的使用会覆盖 heat 模板来使用每个资源。