Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

2.7. 使用自定义核心 Heat 模板

在创建 overcloud 时,director 使用位于 /usr/share/openstack-tripleo-heat-templates 中的一组核心 Heat 模板。如果要自定义此核心模板集合,请使用 Git 工作流来跟踪更改和合并更新。使用以下 git 进程来帮助管理自定义模板集合:

初始化自定义模板集合

使用以下步骤创建包含 Heat 模板集合的初始 Git 存储库:

  1. 将模板集合复制到 stack 用户目录。这个示例将集合复制到 ~/templates 目录:

    $ cd ~/templates
    $ cp -r /usr/share/openstack-tripleo-heat-templates .
  2. 进入自定义模板目录并初始化 Git 存储库:

    $ cd openstack-tripleo-heat-templates
    $ git init .
  3. 配置您的 Git 用户名和电子邮件地址:

    $ git config --global user.name "<USER_NAME>"
    $ git config --global user.email "<EMAIL_ADDRESS>"

    <USER_NAME > 替换为您要使用的用户名。将 <EMAIL_ADDRESS > 替换为您的电子邮件地址。

  4. 为初始提交暂存所有模板:

    $ git add *
  5. 创建初始提交:

    $ git commit -m "Initial creation of custom core heat templates"

这会创建一个包含最新核心模板集合的初始 master 分支。使用此分支作为自定义分支的基础,并将新模板版本合并到此分支。

创建自定义分支和提交更改

使用自定义分支将您的更改存储到核心模板集合中。使用以下步骤创建 my-customizations 分支并向其添加自定义:

  1. 创建 my-customizations 分支并切换到它:

    $ git checkout -b my-customizations
  2. 编辑自定义分支中的文件。
  3. 在 git 中暂存更改:

    $ git add [edited files]
  4. 将更改提交到自定义分支:

    $ git commit -m "[Commit message for custom changes]"

这会将您的更改作为提交添加到 my-customizations 分支。当 master 分支更新时,您可以 rebase my-customizations off master,这会导致 git 把这些提交添加到更新的模板集合中。这有助于跟踪您的自定义,并在将来的模板更新时重新播放它们。

更新自定义模板集合:

更新 undercloud 时,openstack-tripleo-heat-templates 软件包也会更新。当发生这种情况时,请按照以下步骤更新自定义模板集合:

  1. openstack-tripleo-heat-templates 软件包版本保存为环境变量:

    $ export PACKAGE=$(rpm -qv openstack-tripleo-heat-templates)
  2. 进入模板集合目录并为更新的模板创建新分支:

    $ cd ~/templates/openstack-tripleo-heat-templates
    $ git checkout -b $PACKAGE
  3. 删除分支中的所有文件,并将其替换为新版本:

    $ git rm -rf *
    $ cp -r /usr/share/openstack-tripleo-heat-templates/* .
  4. 为初始提交添加所有模板:

    $ git add *
  5. 为软件包更新创建提交:

    $ git commit -m "Updates for $PACKAGE"
  6. 将分支合并到 master 中。如果使用 Git 管理系统(如 GitLab)则使用管理工作流。如果在本地使用 git,请切换到 master 分支并运行 git merge 命令:

    $ git checkout master
    $ git merge $PACKAGE

master 分支现在包含核心模板集合的最新版本。现在,您可以从这个更新的集合中 rebase my-customization 分支。

重新调整自定义分支

使用以下步骤更新 my-customization 分支:

  1. 进入 my-customizations 分支:

    $ git checkout my-customizations
  2. 将分支重基为 master

    $ git rebase master

这会更新 my-customizations 分支,并重播向此分支发出的自定义提交。

如果 git 在 rebase 期间报告任何冲突,请使用以下步骤:

  1. 检查哪些文件包含冲突:

    $ git status
  2. 解决标识的模板文件冲突。
  3. 添加解析的文件

    $ git add [resolved files]
  4. 继续 rebase:

    $ git rebase --continue

部署自定义模板

使用以下步骤部署自定义模板集合:

  1. 确保已切换到 my-customization 分支:

    git checkout my-customizations
  2. 使用 --templates 选项运行 openstack overcloud deploy 命令,以指定您的本地模板目录:

    $ openstack overcloud deploy --templates /home/stack/templates/openstack-tripleo-heat-templates [OTHER OPTIONS]
注意

如果您指定没有目录的 --templates 选项,director 将使用默认模板目录(/usr/share/openstack-tripleo-heat-templates)。

重要

红帽建议使用 第 4 章 配置 Hook 中的方法而不是修改 heat 模板集合。