2.8. Jinja2 渲染


/usr/share/openstack-tripleo-heat-templates 中的核心 Heat 模板包含多个以 j2.yaml 扩展名结尾的文件。这些文件包含 Jinja2 模板语法,director 会把这些文件呈现给其以 .yaml 结尾的静态 Heat 模板。例如,主 overcloud.j2.yaml 文件呈现到 overcloud.yaml 中。director 使用生成的 overcloud.yaml 文件。

支持 Jinja2 的 Heat 模板使用 Jinja2 语法为迭代值创建参数和资源。例如,overcloud.j2.yaml 文件包含以下代码片段:

parameters:
...
{% for role in roles %}
  ...
  {{role.name}}Count:
    description: Number of {{role.name}} nodes to deploy
    type: number
    default: {{role.CountDefault|default(0)}}
  ...
{% endfor %}

当 director 呈现 Jinja2 语法时,director 会迭代 roles_data.yaml 文件中定义的角色,并使用角色的名称填充 {{role.name}}Count 参数。默认 roles_data.yaml 文件包含五个角色,并生成以下示例中的以下参数:

  • ControllerCount
  • ComputeCount
  • BlockStorageCount
  • ObjectStorageCount
  • CephStorageCount

参数渲染版本示例如下:

parameters:
  ...
  ControllerCount:
    description: Number of Controller nodes to deploy
    type: number
    default: 1
  ...

director 只会在核心 Heat 模板的 目录中呈现 Jinja2enabled 模板和环境文件。以下用例演示了呈现 Jinja2 模板的正确方法。

使用案例 1:默认核心模板

模板目录: /usr/share/openstack-tripleo-heat-templates/

环境文件: /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.j2.yaml

director 使用默认核心模板位置(--templates)。director 将 network-isolation.j2.yaml 文件呈现到 network-isolation.yaml 中。在运行 openstack overcloud deploy 命令时,使用 -e 选项包括 rendered network-isolation.yaml 文件的名称。

$ openstack ovecloud deploy --templates \
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml
    ...

使用案例 2:自定义核心模板

模板目录: /home/stack/tripleo-heat-templates

环境文件: /home/stack/tripleo-heat-templates/environments/network-isolation.j2.yaml

director 使用自定义核心模板位置(--templates /home/stack/tripleo-heat-templates)。director 在自定义核心模板中显示 network-isolation.j2.yaml 文件,并呈现到 network-isolation.yaml 中。在运行 openstack overcloud deploy 命令时,使用 -e 选项包括 rendered network-isolation.yaml 文件的名称。

$ openstack ovecloud deploy --templates /home/stack/tripleo-heat-templates \
    -e /home/stack/tripleo-heat-templates/environments/network-isolation.yaml
    ...

使用案例 3:增加使用量

模板目录: /usr/share/openstack-tripleo-heat-templates/

环境文件: /home/stack/tripleo-heat-templates/environments/network-isolation.j2.yaml

此 director 使用自定义核心模板位置(--templates /home/stack/tripleo-heat-templates)。但是,所选的 network-isolation.j2.yaml 不在自定义核心模板中,因此不会 呈现给 network-isolation.yaml。这会导致部署失败。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.