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