4.4. 后配置:自定义所有 overcloud 角色

重要

本文档的早期版本使用 OS::TripleO::Tasks:: thePostConfig 资源来基于每个角色提供后配置 hook。heat 模板集合需要专用使用这些 hook,这意味着您不应该使用它们进行自定义。反之,请使用此处概述的 OS::TripleO::NodeExtraConfigPost hook。

当您完成 overcloud 的创建,但您想要在初始创建时或后续 overcloud 更新时,为所有角色添加额外的配置的情况。在这种情况下,使用以下后配置 hook:

OS::TripleO::NodeExtraConfigPost
在核心 Puppet 配置后,应用到所有节点角色的其他配置。

在这个示例中,使用变量名称服务器在每个节点上附加 resolv.conf 文件:

流程

  1. 创建一个基本的 heat 模板 ~/templates/nameserver.yaml,该脚本使用变量名称服务器附加每个节点的 resolv.conf 文件:

    heat_template_version: 2014-10-16
    
    description: >
      Extra hostname configuration
    
    parameters:
      servers:
        type: json
      nameserver_ip:
        type: string
      DeployIdentifier:
        type: string
      EndpointMap:
        default: {}
        type: json
    
    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 资源的软件配置。注意以下几点:

    • config 参数会引用 CustomExtraConfig 资源,以便 heat 知道要应用的配置。
    • servers 参数检索 overcloud 节点的映射。此参数由父模板提供,这是此 hook 模板中强制的。
    • actions 参数定义何时应用配置。在本例中,您希望在创建 overcloud 时应用配置。可能的操作包括 CREATEUPDATEDELETESUSPENDRESUME
    • input_values 包含一个名为 deploy_identifier 的参数,它存储父模板的 DeployIdentifier。此参数为每个部署更新提供资源的时间戳,以确保后续 overcloud 更新的资源获取。
  2. 创建一个环境文件 ~/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
  3. 将环境文件添加到堆栈中,以及其他环境文件:

    $ openstack overcloud deploy --templates \
        ...
        -e /home/stack/templates/post_config.yaml \
        ...

    这会在内核配置完成初始 overcloud 创建或后续更新后,将配置应用到所有节点。

重要

您可以将 OS::TripleO::NodeExtraConfigPost 注册到一个 heat 模板。后续用法会覆盖要使用的 heat 模板。