2.5. 使用自定义核心 Heat 模板
在创建 overcloud 时,director 使用一组位于 /usr/share/openstack-tripleo-heat-templates
中的 Heat 模板的核心集合。如果要自定义此核心模板集合,请使用 Git 工作流来跟踪更改和合并更新。使用以下 git 进程来帮助管理自定义模板集合:
初始化自定义模板集合
使用以下流程来创建包含 Heat 模板集合的初始 Git 存储库:
将模板的目录复制到
stack
用户目录中。这个示例将其复制到~/templates
目录中:$ cd ~/templates $ cp -r /usr/share/openstack-tripleo-heat-templates .
进入自定义模板目录并初始化 Git 存储库:
$ cd openstack-tripleo-heat-templates $ git init .
暂存初始提交的所有模板:
$ 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
分支更新时,您可以 rebase my-customizations
off 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
重新构建分支 off
master
:$ git rebase master
这会更新 my-customizations
分支,并重播向此分支进行的自定义提交。
如果 git 在 rebase 期间报告任何冲突,请使用此流程:
检查哪些文件包含冲突:
$ git status
- 解决识别的模板文件的冲突。
添加已解析的文件
$ git add [resolved files] $ git commit
继续更新:
$ 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
)。