4.4. post-Configuration:自定义所有 Overcloud 角色
本文档的早期版本使用 OS::TripleO::Tasks::*PostConfig
资源为每个角色提供安装后 hook。director 的 Heat 模板集合需要专门使用这些 hook,这意味着您不应将它们用于自定义用途。而是应使用下面概述的 OS::TripleO::NodeExtraConfigPost
hook。
您完成 Overcloud 创建但希望在初始创建时或后续更新 Overcloud 时添加额外的配置,可能会出现这种情况。在这种情况下,您可以使用以下安装后 hook:
- OS::TripleO::NodeExtraConfigPost
- 在 Puppet 核心配置后,应用到所有节点角色的额外配置。
在本例中,您首先创建一个基本的 heat 模板(/home/stack/templates/nameserver.yaml
),该脚本会运行脚本来附加每个节点的 resolv.conf
及变量 nameserver。
heat_template_version: 2014-10-16 description: > Extra hostname configuration parameters: servers: type: json nameserver_ip: type: string DeployIdentifier: type: string resources: CustomExtraConfig: 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} CustomExtraDeployments: type: OS::Heat::SoftwareDeploymentGroup properties: servers: {get_param: servers} config: {get_resource: CustomExtraConfig} actions: ['CREATE','UPDATE'] input_values: deploy_identifier: {get_param: DeployIdentifier}
在本例中,resource
部分包含以下内容:
- CustomExtraConfig
-
它定义了一个软件配置。在本例中,我们定义 Bash
脚本
,而 Heat 会将_NAMESERVER_IP_
替换为存储在nameserver_ip
参数中的值。 - CustomExtraDeployments
这会执行一个软件配置,这是来自
CustomExtraConfig
资源的软件配置。注意以下几点:-
配置参数
对CustomExtraConfig
资源的引用,以便 Heat 知道要应用的配置。 -
servers
参数检索 Overcloud 节点的映射。此参数由父模板提供,并在此 hook 模板中是强制的。 -
actions
参数定义要应用配置的时间。在这种情况下,我们仅在创建 Overcloud 时应用配置。可能的操作包括CREATE
、UPDATE
、DELETE
、SUSPEND
和RESUME
。 -
input_values
包含一个名为deploy_identifier
的参数,它将从父模板存储DeployIdentifier
。此参数为每个部署更新的资源提供时间戳。这可确保后续 overcloud 更新上的资源获取。
-
接下来,创建一个环境文件(/home/stack/templates/post_config.yaml
),将 heat 模板注册为 OS::TripleO::NodeExtraConfigPost:
资源类型。
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
若要应用配置,可在创建或更新 Overcloud 时将环境文件添加到堆栈中,以及其他环境文件。例如:
$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/post_config.yaml \ ...
这会在初始 Overcloud 创建或后续更新时,将配置应用到所有节点。
您只能将 OS::TripleO::NodeExtraConfigPost
注册到一个 Heat 模板。后续用法会覆盖要使用的 Heat 模板。