10.3. 配置 hook
使用配置 hook 将您自己的自定义配置功能注入 overcloud 部署过程。您可以创建 hook,以在主 overcloud 服务配置前后或之后注入自定义配置,以及用于修改和包含基于 Puppet 的配置的 hook。
10.3.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,该脚本将变量名称服务器写入节点的resolv.conf文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
resource部分包含以下参数:- CustomExtraConfigPre
-
这定义了软件配置。在本例中,我们定义 Bash
脚本,heat 将_NAMESERVER_IP_替换为nameserver_ip参数中存储的值。 - CustomExtraDeploymentPre
这会执行软件配置,这是
CustomExtraConfigPre资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfigPre资源,以便 heat 知道要应用的配置。 -
server参数检索 overcloud 节点的映射。此参数由父模板提供,并在此 hook 模板中强制使用。 -
actions参数定义何时应用配置。使用默认的CREATE值在 overcloud 创建时应用配置。 -
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
resource_registry: OS::TripleO::ControllerExtraConfigPre: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境文件添加到堆栈中,以及其他环境文件:
openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将配置应用到所有 Controller 节点,然后再在初始 overcloud 创建或后续更新开始。
每个 hook 只能将每个资源注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。
10.3.2. 预配置:自定义所有 overcloud 角色 复制链接链接已复制到粘贴板!
overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一个 hook,可用于在核心配置开始前配置所有节点类型:
- OS::TripleO::NodeExtraConfig
- 在核心 Puppet 配置之前,应用到所有节点角色的额外配置。
在本例中,使用变量 nameserver 在每个节点上附加 resolv.conf 文件:
流程
创建运行脚本的基本 heat 模板
~/templates/nameserver.yaml,以使用变量 nameserver 附加每个节点的resolv.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
resource部分包含以下参数:- CustomExtraConfigPre
-
此参数定义一个软件配置。在本例中,您将定义 Bash
脚本,heat 将_NAMESERVER_IP_替换为nameserver_ip参数中存储的值。 - CustomExtraDeploymentPre
此参数执行软件配置,这是
CustomExtraConfigPre资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfigPre资源,以便 heat 知道要应用的配置。 -
server参数检索 overcloud 节点的映射。此参数由父模板提供,并在此 hook 模板中强制使用。 -
actions参数定义何时应用配置。使用默认的CREATE值在 overcloud 创建时应用配置。 -
input_values参数包含一个名为deploy_identifier的子参数,它存储了父模板中的DeployIdentifier。此参数为每个部署更新提供资源的时间戳,以确保后续 overcloud 更新中的资源恢复。
-
创建一个环境文件
~/templates/pre_config.yaml,将 heat 模板注册为OS::TripleO::NodeExtraConfig资源类型。resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1
resource_registry: OS::TripleO::NodeExtraConfig: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境文件添加到堆栈中,以及其他环境文件:
openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/pre_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将配置应用到所有节点,然后再在初始 overcloud 创建或后续更新开始。
您可以将 OS::TripleO::NodeExtraConfig 注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。
10.3.3. Post-configuration:自定义所有 overcloud 角色 复制链接链接已复制到粘贴板!
此文档的早期版本使用 OS::TripleO::Tasks::*PostConfig 资源来为每个角色提供后配置 hook。heat 模板集合要求专用使用这些 hook,这意味着您不应该将它们用于自定义用途。反之,使用此处概述的 OS::TripleO::NodeExtraConfigPost hook。
在完成 overcloud 创建但您希望在初始创建或后续 overcloud 更新时向所有角色添加额外的配置的情况。在这种情况下,使用以下后配置 hook:
- OS::TripleO::NodeExtraConfigPost
- 在核心 Puppet 配置后,应用到所有节点角色的额外配置。
在本例中,使用变量 nameserver 在每个节点上附加 resolv.conf 文件:
流程
创建运行脚本的基本 heat 模板
~/templates/nameserver.yaml,以使用变量 nameserver 附加每个节点的resolv.conf文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在本例中,
resource部分包含以下参数:- CustomExtraConfig
-
这定义了软件配置。在本例中,您将定义 Bash
脚本,heat 将_NAMESERVER_IP_替换为nameserver_ip参数中存储的值。 - CustomExtraDeployments
这会执行软件配置,这是
CustomExtraConfig资源的软件配置。注意以下几点:-
config参数会引用CustomExtraConfig资源,以便 heat 知道要应用的配置。 -
servers参数检索 overcloud 节点的映射。此参数由父模板提供,并在此 hook 模板中强制使用。 -
actions参数定义何时应用配置。使用默认的CREATE值在 overcloud 创建时应用配置。 -
input_values包含一个名为deploy_identifier的参数,它存储父模板中的DeployIdentifier。此参数为每个部署更新提供资源的时间戳,以确保后续 overcloud 更新中的资源恢复。
-
创建一个环境文件
~/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
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/nameserver.yaml parameter_defaults: nameserver_ip: 192.168.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将环境文件添加到堆栈中,以及其他环境文件:
openstack overcloud deploy --templates \ ... -e /home/stack/templates/post_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/post_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会在核心配置在初始 overcloud 创建或后续更新后将配置应用到所有节点。
您可以将 OS::TripleO::NodeExtraConfigPost 注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。
10.3.4. puppet:为角色自定义 hieradata 复制链接链接已复制到粘贴板!
heat 模板集合包含一组参数,可用于将额外的配置传递给某些节点类型。这些参数将配置保存为节点上的 Puppet 配置的 hieradata:
- ControllerExtraConfig
- 添加至所有 Controller 节点的配置。
- ComputeExtraConfig
- 添加至所有 Compute 节点的配置。
- BlockStorageExtraConfig
- 添加至所有块存储节点的配置。
- ObjectStorageExtraConfig
- 添加至所有对象存储节点的配置。
- CephStorageExtraConfig
- 添加至所有 Ceph Storage 节点的配置。
- [ROLE]ExtraConfig
-
配置以添加到可组合角色。将
[ROLE]替换为可组合角色名称。 - ExtraConfig
- 配置以添加到所有节点。
流程
要在部署后配置过程中添加额外的配置,请在
parameter_defaults部分中创建一个包含这些参数的环境文件。例如,要将 Compute 主机的保留内存增加到 1024 MB,并将 VNC 密钥映射设置为日语,请在ComputeExtraConfig参数中使用以下条目:parameter_defaults: ComputeExtraConfig: nova::compute::reserved_host_memory: 1024 nova::compute::vnc_keymap: japarameter_defaults: ComputeExtraConfig: nova::compute::reserved_host_memory: 1024 nova::compute::vnc_keymap: jaCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
将此环境文件包含在
openstack overcloud deploy命令中,以及与部署相关的任何其他环境文件。
您只能定义每个参数一次。后续用法会覆盖前面的值。
10.3.5. puppet:为单个节点自定义 hieradata 复制链接链接已复制到粘贴板!
您可以使用 heat 模板集合为各个节点设置 Puppet hieradata:
流程
从节点的内省数据识别系统 UUID:
openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuid
$ openstack baremetal introspection data save 9dcc87ae-4c6d-4ede-81a5-9b20d7dc4a14 | jq .extra.system.product.uuidCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令返回一个系统 UUID。例如:
"f5055c6c-477f-47fb-afe5-95c6928c407f"
"f5055c6c-477f-47fb-afe5-95c6928c407f"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个环境文件来定义特定于节点的 hieradata,并将
per_node.yaml模板注册到预配置 hook。在NodeDataLookup参数中包含您要配置的节点的系统 UUID:resource_registry: OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml parameter_defaults: NodeDataLookup: '{"f5055c6c-477f-47fb-afe5-95c6928c407f": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'resource_registry: OS::TripleO::ComputeExtraConfigPre: /usr/share/openstack-tripleo-heat-templates/puppet/extraconfig/pre_deploy/per_node.yaml parameter_defaults: NodeDataLookup: '{"f5055c6c-477f-47fb-afe5-95c6928c407f": {"nova::compute::vcpu_pin_set": [ "2", "3" ]}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将此环境文件包含在
openstack overcloud deploy命令中,以及与部署相关的任何其他环境文件。
per_node.yaml 模板在节点上生成一组 hieradata 文件,它们对应于每个系统 UUID,并包含您定义的 hieradata。如果未定义 UUID,则生成的 hieradata 文件为空。在本例中,per_node.yaml 模板在所有 Compute 节点上运行,由 OS::TripleO::ComputeExtraConfigPre hook 定义,但只有具有系统 UUID f5055c6c-477f-47fb-afe5-95c6928c407f 接收 hieradata 的 Compute 节点。
您可以使用此机制根据特定要求定制每个节点。
10.3.6. Puppet:应用自定义清单 复制链接链接已复制到粘贴板!
在某些情况下,您可能想要在 overcloud 节点上安装和配置一些额外的组件。您可以在主配置完成后使用应用到节点的自定义 Puppet 清单来实现此目的。作为基本示例,您可能想要在每个节点上安装 motd
流程
创建一个 heat 模板
~/templates/custom_puppet_config.yaml,它将启动 Puppet 配置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例包括模板中的
/home/stack/templates/motd.pp,并将其传递给配置的节点。motd.pp文件包含安装和配置motd所需的 Puppet 类。创建一个环境文件
~templates/puppet_post_config.yaml,将 heat 模板注册为OS::TripleO::NodeExtraConfigPost:资源类型。resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yaml
resource_registry: OS::TripleO::NodeExtraConfigPost: /home/stack/templates/custom_puppet_config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将此环境文件包含在
openstack overcloud deploy命令中,以及与部署相关的任何其他环境文件。openstack overcloud deploy --templates \ ... -e /home/stack/templates/puppet_post_config.yaml \ ...$ openstack overcloud deploy --templates \ ... -e /home/stack/templates/puppet_post_config.yaml \ ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会将
motd.pp的配置应用到 overcloud 中的所有节点。