4.2. 预配置:自定义特定的 overcloud 角色
overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组 hook,可用于在第一次引导后和核心配置开始前用于为特定节点角色执行自定义配置。这些 hook 包括:
本文档的早期版本使用 OS::TripleO::Tasks:: thePreConfig
资源来基于每个角色提供预配置 hook。heat 模板集合需要专用使用这些 hook,这意味着您不应该使用它们进行自定义。取而代之,请使用此处概述的 OS::TripleO::114ExtraConfigPre
hook。
- OS::TripleO::ControllerExtraConfigPre
- 在核心 Puppet 配置之前,应用到 Controller 节点的其他配置。
- OS::TripleO::ComputeExtraConfigPre
- 在核心 Puppet 配置之前,应用到 Compute 节点的其他配置。
- OS::TripleO::CephStorageExtraConfigPre
- 在核心 Puppet 配置之前,应用到 Ceph Storage 节点的其他配置。
- OS::TripleO::ObjectStorageExtraConfigPre
- 在核心 Puppet 配置之前,应用到 Object Storage 节点的其他配置。
- OS::TripleO::BlockStorageExtraConfigPre
- 在核心 Puppet 配置之前,应用到块存储节点的其他配置。
- OS::TripleO::[ROLE]ExtraConfigPre
-
在核心 Puppet 配置之前,应用到自定义节点的其他配置。将
[ROLE]
替换为可组合角色名称。
在本例中,将 resolv.conf
文件附加到特定角色的所有节点上,并带有一个变量名称服务器:
流程
创建一个基本的 heat 模板
~/templates/nameserver.yaml
,该脚本将变量名称服务器写入节点的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
资源的软件配置。注意以下几点:-
config
参数会引用CustomExtraConfigPre
资源,以便 heat 知道要应用的配置。 -
server
参数检索 overcloud 节点的映射。此参数由父模板提供,这是此 hook 模板中强制的。 -
actions
参数定义何时应用配置。在本例中,您希望在创建 overcloud 时应用配置。可能的操作包括CREATE
、UPDATE
、DELETE
、SUSPEND
和RESUME
。 -
input_values
包含一个名为deploy_identifier
的参数,它存储父模板的DeployIdentifier
。此参数为每个部署更新提供资源的时间戳,以确保后续 overcloud 更新的资源获取。
-
创建一个环境文件
~/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
将环境文件添加到堆栈中,以及其他环境文件:
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...
这会在核心配置开始创建或后续更新之前,将配置应用到所有 Controller 节点。
您可以为每个 hook 将每个资源注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。