5.5. 在 Overcloud 配置后自定义配置
如果您在创建 Overcloud 时,可能会发生这样的情况,但希望在初始创建时添加其他配置,或者在后续 Overcloud 更新时进行。在这种情况下,您可以使用 OS::TripleO::NodeExtraConfigPost 资源,使用标准的 OS::Heat::SoftwareConfig 类型来应用配置。这在主 Overcloud 配置完成后应用额外的配置。
在本例中,我们首先创建一个基本的 Heat 模板(nameserver.yaml),它运行一个脚本来附加每个节点的 resolv.conf 和变量 nameserver。
servers 参数是应用配置的服务器列表,由父模板(overcloud-without-mergepy.yaml)提供。此参数在所有 OS::TripleO::NodeExtraConfigPost 模板中是必需的。
接下来,创建一个环境文件(post_config.yaml),它将我们的 Heat 模板注册为 OS::TripleO::NodeExtraConfigPost 资源类型。
resource_registry: OS::TripleO::NodeExtraConfigPost: nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry:
OS::TripleO::NodeExtraConfigPost: nameserver.yaml
parameter_defaults:
nameserver_ip: 192.168.1.1
这可实现以下目标:
-
OS::TripleO::NodeExtraConfigPost是集合中使用的基于 director 的 Heat 资源。此资源通过*-post.yaml模板将配置传递给每个节点类型。默认NodeExtraConfigPost是指生成空白值的 Heat 模板(extraconfig/post_deploy/default.yaml)。在我们的情形中,我们的post_config.yaml环境文件会替换此默认值,并参考我们自己的nameserver.yaml文件。 -
环境文件也会将
nameserver_ip作为我们的环境的parameter_default值传递。这是一个存储我们名称服务器的 IP 地址的参数。然后,nameserver.yamlHeat 模板接受在parameters部分中定义的参数。 -
模板通过
OS::Heat::SoftwareConfig将ExtraConfig定义为配置资源。注意group: script属性。组定义要使用的软件配置工具,可以通过 Heat 的一组 hook 获得。在这种情况下,脚本hook 运行一个可执行脚本,在SoftwareConfig资源中定义作为config属性。 脚本本身会附加
/etc/resolve.conf和名称服务器 IP 地址。请注意str_replace属性,它允许您将template部分中的变量替换为params部分中的参数。在本例中,我们将 NAMESERVER_IP 设置为名称服务器 IP 地址,这将替换脚本中的同一变量。这会生成以下脚本:#!/bin/sh echo "nameserver 192.168.1.1" >> /etc/resolve.conf
#!/bin/sh echo "nameserver 192.168.1.1" >> /etc/resolve.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow ExtraDeployments将ExtraConfig配置部署到节点。注意以下几点:-
config属性引用ExtraConfig资源,以便 Heat 知道要应用的配置。 -
servers属性检索 Overcloud 节点的映射,overcloud-without-mergepy.yaml通过它。 -
actions属性定义何时应用配置。在这种情况下,我们仅在创建 Overcloud 时应用配置。可能的操作包括CREATE、UPDATE、DELETE、SUSPEND和RESUME。
-
本例演示了如何创建 Heat 模板,该模板定义配置并使用 OS::Heat::SoftwareConfig 和 OS::Heat::SoftwareDeployments 进行部署。它还介绍了如何在环境文件中定义参数,并将它们传递给配置中的模板。