3.6. 使用自定义核心 heat 模板
在创建 overcloud 时,director 会使用位于 /usr/share/openstack-tripleo-heat-templates
中的一组核心 heat 模板。如果要自定义此核心模板集合,请使用以下 Git 工作流来管理自定义模板集合:
流程
创建包含 heat 模板集合的初始 Git 存储库:
将模板集合复制到
/home/stack/templates
目录中:$ cd ~/templates $ cp -r /usr/share/openstack-tripleo-heat-templates .
进入自定义模板目录并初始化 Git 存储库:
$ cd ~/templates/openstack-tripleo-heat-templates $ git init .
配置 Git 用户名和电子邮件地址:
$ git config --global user.name "<USER_NAME>" $ git config --global user.email "<EMAIL_ADDRESS>"
-
将
<USER_NAME
> 替换为您要使用的用户名。 将
<EMAIL_ADDRESS
> 替换为您的电子邮件地址。为初始提交暂存所有模板:
$ git add *
创建初始提交:
$ git commit -m "Initial creation of custom core heat templates"
这将创建一个初始
master
分支,其中包含最新的核心模板集合。使用此分支作为自定义分支的基础,并将新模板版本合并到此分支中。
使用自定义分支将您的更改存储在核心模板集合中。使用以下步骤创建
my-customizations
分支并添加自定义:创建
my-customizations
分支并切换到它:$ git checkout -b my-customizations
- 编辑自定义分支中的文件。
在 git 中暂存更改:
$ git add [edited files]
将更改提交到自定义分支:
$ git commit -m "[Commit message for custom changes]"
这会将您的更改作为提交添加到
my-customizations
分支。当master
分支更新时,您可以对master
进行更新,这会导致 git 将这些提交添加到更新的模板集合中。这有助于跟踪您的自定义信息,并在将来的模板更新中重新显示它们。
更新 undercloud 时,
openstack-tripleo-heat-templates
软件包可能还会接收更新。当发生这种情况时,还必须更新自定义模板集合:将
openstack-tripleo-heat-templates
软件包版本保存为环境变量:$ export PACKAGE=$(rpm -qv openstack-tripleo-heat-templates)
进入模板集合目录,并为更新的模板创建新分支:
$ cd ~/templates/openstack-tripleo-heat-templates $ git checkout -b $PACKAGE
删除分支中的所有文件,并将其替换为新版本:
$ git rm -rf * $ cp -r /usr/share/openstack-tripleo-heat-templates/* .
为初始提交添加所有模板:
$ git add *
为软件包更新创建提交:
$ git commit -m "Updates for $PACKAGE"
将分支合并到 master 中。如果使用 Git 管理系统(如 GitLab),请使用管理工作流。如果您在本地使用 git,切换到
master
分支并运行git merge
命令:$ git checkout master $ git merge $PACKAGE
master
分支现在包含核心模板集合的最新版本。现在,您可以从这个更新的集合中更新 my-customization
分支。
更新
my-customization
分支:进入
my-customizations
分支:$ git checkout my-customizations
对
master
进行分支更新:$ git rebase master
这会更新
my-customizations
分支,并重播为此分支进行的自定义提交。
解决更新过程中发生的任何冲突:
检查哪些文件包含冲突:
$ git status
- 解决标识的模板文件冲突。
添加解析的文件:
$ git add [resolved files]
继续更新:
$ git rebase --continue
部署自定义模板集合:
确保您已切换到
my-customization
分支:git checkout my-customizations
使用
--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
)。
红帽建议使用 第 5 章 配置 hook 中的方法,而不是修改 heat 模板集合。