2017-05-06 7 views
1

私はkubernetesのyaml定義を作成するためにgoテンプレートを使用しています。私はテンプレートを入れ子にしようとしていますが、インクルードが含まれているときにインデントが間違っているため、単に定義を再利用できない問題にぶつかります。つまり、コンテンツにはインデントが必要ですが、別のコンテンツにはインデントはありません。含めるコンテンツのインデントを制御するにはどうすればよいですか?以下goテンプレート:インクルードされたテンプレートの内容をインデントする方法

例。私は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 }} 
+1

一般的なテキストテンプレートエンジンの代わりにYAMLパーサ?あなたの仕事に間違ったツールを使っているようです。あなたがスペースを必要としないなら、それらをタイプしないと言われていますか? – Carpetsmoker

答えて

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" . }} 
1

下のあなたはindent機能へのテンプレートの出力パイプことができるようになります。使用しないのはなぜ

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