2.6. 使用自定义核心 heat 模板

在创建 overcloud 时,director 会使用位于 /usr/share/openstack-tripleo-heat-templates 中的一组核心 heat 模板。如果要自定义此核心模板集合,请使用以下 Git 工作流来管理自定义模板集合:

流程

  • 创建包含 heat 模板集合的初始 Git 存储库:

    1. 将模板集合复制到 /home/stack/templates 目录中:

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

      $ cd ~/templates/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 分支更新时,您可以对 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. master 进行分支更新:

      $ git rebase master

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

  • 解决更新过程中发生的任何冲突:

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

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

      $ git add [resolved files]
    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)。

重要

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