如何移除Hashicorp Vault生成文件开头的换行符(Go模板)
解决Hashicorp Vault Agent模板生成凭证文件开头空行问题
问题背景
使用Hashicorp Vault Agent注入模板生成凭证文件时,功能正常但文件开头始终多一个空行。
原模板代码
vault.hashicorp.com/agent-inject-template-credentials.txt: | {{- with secret (print "secret/data/test/config") }}{{- range $k, $v := .Data.data }} {{ $k }}: {{ $v }} {{- end }}{{- end }}
输入数据
map[test1:test1 test2:test2 test3:test3]
当前输出(含开头空行)
// 开头存在一个空行 test1: test1 test2: test2 test3: test3
问题原因
Go模板中,range标签后的硬换行属于模板静态内容,会被直接输出,这就是开头空行的来源。
解决方案
利用Go模板的{{- ... -}}语法修剪标签右侧的空白(包括换行符),修改方式如下:
修改后的模板(紧凑写法)
vault.hashicorp.com/agent-inject-template-credentials.txt: | {{- with secret (print "secret/data/test/config") }}{{- range $k, $v := .Data.data -}} {{ $k }}: {{ $v }} {{- end }}{{- end }}
修改后的模板(易读写法)
vault.hashicorp.com/agent-inject-template-credentials.txt: | {{- with secret (print "secret/data/test/config") -}} {{- range $k, $v := .Data.data }} {{ $k }}: {{ $v }} {{- end }}{{- end }}
修改后输出
test1: test1 test2: test2 test3: test3
内容的提问来源于stack exchange,提问作者Murakami
相关产品推荐
相关产品推荐

