第 5 章 配置 hook
使用配置 hook 将您自己的自定义配置功能注入 overcloud 部署过程。您可以创建 hook,以在 overcloud 主服务配置之前和之后注入自定义配置,以及用于修改和包含基于 Puppet 的配置的 hook。
5.1. 预配置: 自定义特定的 overcloud 角色 复制链接链接已复制到粘贴板!
overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组 hook,可用于在核心配置开始前为特定节点角色执行自定义配置。这些 hook 包括以下配置:
本文档的早期版本使用了 OS::TripleO::Tasks::*PreConfig 资源来根据角色提供预配置 hook。heat 模板集合需要专用使用这些 hook,这意味着您不应该使用它们进行自定义。取而代之,请使用此处概述的 OS::TripleO::*ExtraConfigPre 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]替换为可组合角色名称。
在本例中,使用变量 nameserver 在特定角色的所有节点上附加 resolv.conf 文件:
流程
创建一个基本的 heat 模板
~/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'] 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]}在本例中,
resources部分包含以下参数:- CustomExtraConfigPre
-
这定义了软件配置。在本例中,我们定义一个 Bash
脚本,并且 heat 将_NAMESERVER_IP_替换为存储在nameserver_ip参数中的值。 - CustomExtraDeploymentPre
这会执行软件配置,这是来自
CustomExtraConfigPre资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfigPre资源,以便 heat 知道要应用的配置。 -
server参数检索 overcloud 节点的 map。此参数由父模板提供,在此 hook 模板中是强制的。 -
actions参数定义何时应用配置。在这种情况下,您要在创建 overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。 -
input_values包含一个名为deploy_identifier的参数,它存储来自父模板的DeployIdentifier。此参数为每个部署更新的资源提供时间戳,以确保后续 overcloud 更新中的资源获取。
-
创建一个环境文件
~/templates/pre_config.yaml,该文件将 heat 模板注册到基于角色的资源类型。例如,要将配置应用到 Controller 节点,请使用ControllerExtraConfigPrehook:resource_registry: OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1将环境文件添加到堆栈中,以及其他环境文件:
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...这会在核心配置开始创建初始 overcloud 或后续更新前,将所有 Controller 节点应用到所有 Controller 节点。
您可以将每个资源注册到每个 hook 的一个 heat 模板。后续用法会覆盖要使用的 heat 模板。