如何缩进包含模板的内容

问题描述 投票:2回答:2

我正在使用go模板为kubernetes创建yaml定义。我试图嵌套模板,但遇到的问题是我无法重复使用定义只是因为包含时缩进是错误的。即,在一种情况下,内容需要缩进而在另一种情况下不需要缩进。如何控制包含内容的缩进?

以下示例。我正在重用pod.tmpl,在第一种情况下它可以按原样包含。在第二种情况下,我需要缩进整个内容,使其成为服务的成员

{{ if (eq .Case "pod")
  # NO indenting
  {{ template "pod" }}
{{ end }}

{{ if (eq .Case "service")
  service:
    # need to indent! so contents become members of service:
    {{ template "pod" }}
{{ end }}
go yaml go-templates templating-engine
2个回答
2
投票

您应该能够将模板的输出传递给indent包中提供的sprig函数:

{{ if (eq .Case "service")
  service:
    # need to indent! so contents become members of service:
{{ template "pod" | indent 4 }}
{{ end }}

0
投票

如果我缩进pod.tmpl的内容然后缩进顶部以对齐如下,我发现我可以解决这个问题

{{ if (eq $template "pod.tmpl") }}
    apiVersion: v1
    kind: Pod
{{ end }}
{{ if (eq $template "deployment.tmpl") }}
apiVersion: v1
kind: Deployment
metadata:
  name: {{ .Name }}-deployment
spec:
  replicas: {{ .Scale }}
  template:
{{template "pod" dict "Version" $version "Domain" $domain "Image" $image "ImageDerived" $imageDerived "Service" . }}
© www.soinside.com 2019 - 2024. All rights reserved.