5.4. 在 Overcloud 配置前自定义配置


Overcloud 使用 Puppet 进行 OpenStack 组件的核心配置。director 提供了一组资源,以便在第一次引导完成后和核心配置开始前提供自定义配置。这些资源包括:

OS::TripleO::ControllerExtraConfigPre
在核心 Puppet 配置前,应用到 Controller 节点的其他配置。
OS::TripleO::ComputeExtraConfigPre
在 Puppet 核心配置之前,应用到 Compute 节点的其他配置。
OS::TripleO::CephStorageExtraConfigPre
在 Puppet 核心配置之前,应用到 CephStorage 节点的其他配置。
OS::TripleO::NodeExtraConfig
在核心 Puppet 配置前,应用到所有节点角色的其他配置。

在本例中,我们首先创建一个基本的 Heat 模板(/home/stack/templates/nameserver.yaml),它运行一个脚本来附加每个节点的 resolv.conf 和变量 nameserver。

heat_template_version: 2014-10-16

parameters:
  server:
    type: server
  nameserver_ip:
    type: string

resources:
  ExtraPreConfig:
    type: OS::Heat::SoftwareConfig
    properties:
      group: script
      config:
        str_replace:
          template: |
            #!/bin/sh
            echo "nameserver _NAMESERVER_IP_" >> /etc/resolve.conf
          params:
            _NAMESERVER_IP_: {get_param: nameserver_ip}
  ExtraPreDeployment:
    type: OS::Heat::SoftwareDeployment
    properties:
      config: {get_resource: ExtraPreConfig}
      server: {get_param: server}
      actions: ['CREATE']

outputs:
  deploy_stdout:
    description: Deployment reference, used to trigger post-deploy on changes
    value: {get_attr: [ExtraPreDeployment, deploy_stdout]}
重要

servers 参数是要应用配置的服务器列表,由父模板提供。这个参数在所有预配置模板中都是必需的。

接下来,创建一个环境文件(/home/stack/templates/pre_config.yaml),它将我们的 Heat 模板注册为 OS::TripleO::NodeExtraConfig 资源类型。

resource_registry:
  OS::TripleO::NodeExtraConfig: nameserver.yaml
parameter_defaults:
  nameserver_ip: 192.168.1.1

这可实现以下目标:

  1. OS::TripleO::NodeExtraConfig 是 Heat 模板集合中配置模板中使用的基于 director 的 Heat 资源。此资源通过 *-puppet.yaml 模板将配置传递给每个节点类型。默认 NodeExtraConfig 指的是生成空白值的 Heat 模板(puppet/extraconfig/pre_deploy/default.yaml)。在我们的情形中,我们的 pre_config.yaml 环境文件会将此默认值替换为对我们自己的 nameserver.yaml 文件的引用。
  2. 环境文件也会将 nameserver_ip 作为我们的环境的 parameter_default 值传递。这是一个存储我们名称服务器的 IP 地址的参数。然后,nameserver.yaml Heat 模板接受在 parameters 部分中定义的参数。
  3. 模板通过 OS::Heat::SoftwareConfigExtraPreConfig 定义为配置资源。注意 group: script 属性。 定义要使用的软件配置工具,可以通过 Heat 的一组 hook 获得。在这种情况下,脚本 hook 运行一个可执行脚本,在 SoftwareConfig 资源中定义作为 config 属性。
  4. 脚本本身会附加 /etc/resolve.conf 和名称服务器 IP 地址。请注意 str_replace 属性,它允许您将 template 部分中的变量替换为 params 部分中的参数。在本例中,我们将 NAMESERVER_IP 设置为名称服务器 IP 地址,这将替换脚本中的同一变量。这会生成以下脚本:

    #!/bin/sh
    echo "nameserver 192.168.1.1" >> /etc/resolve.conf
  5. ExtraPreDeploymentsExtraPreConfig 配置部署到节点。注意以下几点:

    • config 属性引用 ExtraPreConfig 资源,以便 Heat 知道要应用的配置。
    • servers 属性检索 Overcloud 节点的映射,overcloud-without-mergepy.yaml 通过它。
    • actions 属性定义何时应用配置。在这种情况下,我们仅在创建 Overcloud 时应用配置。可能的操作包括 CREATEUPDATEDELETESUSPENDRESUME

本例演示了如何创建 Heat 模板,该模板使用 OS::Heat:: SoftwareConfig 和 OS::Heat::SoftwareDeployments 定义配置并部署它。它还介绍了如何在环境文件中定义参数,并将它们传递给配置中的模板。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.