Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
4.2. pre-Configuration:自定义特定 Overcloud 角色
本文档的早期版本使用 OS::TripleO::Tasks::*PreConfig 资源为每个角色提供预配置 hook。director 的 Heat 模板集合需要专门使用这些 hook,这意味着您不应将它们用于自定义用途。而是应使用下面概述的 OS::TripleO::*ExtraConfigPre hook。
Overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组 hook,用于在第一次引导完成后和内核配置开始前为特定节点角色提供自定义配置。这些 hook 包括:
- OS::TripleO::ControllerExtraConfigPre
- 在 Puppet 核心配置前,应用到 Controller 节点的额外配置。
- OS::TripleO::ComputeExtraConfigPre
- 在 Puppet 核心配置之前,应用到 Compute 节点的额外配置。
- OS::TripleO::CephStorageExtraConfigPre
- 在 Puppet 核心配置之前,应用到 Ceph Storage 节点的额外配置。
- OS::TripleO::ObjectStorageExtraConfigPre
- 在 Puppet 核心配置之前,应用到对象存储节点的其他配置。
- OS::TripleO::BlockStorageExtraConfigPre
- 在 Puppet 核心配置之前,应用到块存储节点的额外配置。
- OS::TripleO::[ROLE]ExtraConfigPre
-
在 Puppet 核心配置之前,应用到自定义节点的其他配置。将
[ROLE]替换为可组合角色名称。
在本例中,您首先创建一个基本的 heat 模板(/home/stack/templates/nameserver.yaml),该脚本使用变量 nameserver 写入节点的 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]}
在本例中,resource 部分包含以下内容:
- CustomExtraConfigPre
-
它定义了一个软件配置。在本例中,我们定义 Bash
脚本,而 Heat 会将_NAMESERVER_IP_替换为存储在nameserver_ip参数中的值。 - CustomExtraDeploymentPre
这会执行一个软件配置,这是来自
CustomExtraConfigPre资源的软件配置。注意以下几点:-
配置参数对CustomExtraConfigPre资源的引用,以便 Heat 知道要应用的配置。 -
server参数检索 Overcloud 节点的映射。此参数由父模板提供,并在此 hook 模板中是强制的。 -
actions参数定义要应用配置的时间。在这种情况下,我们仅在创建 Overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。 -
input_values包含一个名为deploy_identifier的参数,它将从父模板存储DeployIdentifier。此参数为每个部署更新的资源提供时间戳。这可确保后续 overcloud 更新上的资源获取。
-
接下来,创建一个环境文件(/home/stack/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
若要应用配置,可在创建或更新 Overcloud 时将环境文件添加到堆栈中,以及其他环境文件。例如:
$ openstack overcloud deploy --templates \
...
-e /home/stack/templates/pre_config.yaml \
...这会在内核配置从初始 Overcloud 创建或后续更新开始前,将配置应用到所有 Controller 节点。
您只能为每个 hook 只将一个 Heat 模板注册到一个 Heat 模板。后续用法会覆盖要使用的 Heat 模板。