5.6. 将自定义 Puppet 配置应用到 Overcloud
之前,我们讨论了将新后端的配置添加到 OpenStack Puppet 模块中。本节介绍 director 如何执行新配置的应用程序。
Heat 模板提供 hook,供您通过 OS::Heat::SoftwareConfig 资源应用 Puppet 配置。此过程类似于我们包括和执行 Bash 脚本的方式。但是,我们不使用 group: script hook,而是使用 group: puppet hook。
例如,您可能有一个 Puppet 清单(example-puppet-manifest.pp),它使用官方 Cinder Puppet 模块启用 NFS Cinder 后端:
cinder::backend::nfs { 'mynfsserver':
nfs_servers => ['192.168.1.200:/storage'],
}
此 Puppet 配置使用 cinder::backend::nfs 定义类型来创建一个新资源。要通过 Heat 应用此资源,请创建一个运行 Puppet 清单的基本 Heat 模板(puppet-config.yaml):
heat_template_version: 2014-10-16
parameters:
servers:
type: json
resources:
ExtraPuppetConfig:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
config:
get_file: example-puppet-manifest.pp
options:
enable_hiera: True
enable_facter: False
ExtraPuppetDeployment:
type: OS::Heat::SoftwareDeployments
properties:
config: {get_resource: ExtraPuppetConfig}
servers: {get_param: servers}
actions: ['CREATE','UPDATE']
接下来,创建一个环境文件(puppet_config.yaml),它将我们的 Heat 模板注册为 OS::TripleO::NodeExtraConfigPost 资源类型。
resource_registry:
OS::TripleO::NodeExtraConfigPost: puppet_config.yaml
本例与使用上一节中 脚本 hook 示例中的 SoftwareConfig 和 SoftwareDeployments 类似。但是,在这个示例中有一些区别:
-
我们设置
group: puppet,以便我们执行puppethook。 -
config属性使用get_file属性来引用包含额外配置的 Puppet 清单。 options属性包含一些特定于 Puppet 配置的选项:-
enable_hiera选项使 Puppet 配置能够使用层次结构数据。 -
enable_选项使 Puppet 配置能够使用事实命令中的系统事实。facter
-
本例演示了如何将 Puppet 清单包含为 Overcloud 的软件配置的一部分。这提供了一种方式,可以对 Overcloud 镜像上的现有 Puppet 模块应用某些配置类,这有助于自定义 Overcloud 以使用某些软件和硬件。