Red Hat Training

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

2.5. 使用自定义核心 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 add *
  4. 创建初始提交:

    $ 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 分支现在包含核心模板集合的最新版本。现在,您可以从这个更新的集合中重新生成 my-customization 分支。

重负自定义分支

使用以下流程更新 my-customization 分支,:

  1. 进入 my-customizations 分支:

    $ git checkout my-customizations
  2. 重新构建分支 off master

    $ git rebase master

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

如果 git 在 rebase 期间报告任何冲突,请使用此流程:

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

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

    $ git add [resolved files]
    $ git commit
  4. 继续更新:

    $ 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)。