2017-07-28 106 views
1

我正在使用Golang模板來管理Helm的部署。使用Golang模板動態獲取變量

我有values.yaml文件是這樣的:

env: dev 
config: 
    dev: 
     myname: Hi 
    live: 
     myname: Bye 

現在我想獲得取決於環境的值(DEV,住)。 像:

{{ .Values.config. {{.Values.env}} }} 

不幸的是,這種方式行不通,因爲它說:

bad character U+007B '{' 

有沒有什麼辦法讓別人使用值的價值?

回答

0

以下可能工作。我沒有測試它...

{{ .Values.config.(.Values.env) }} 

完整的模板語法在text/template documentation被發現。

2

問題來自嵌套模板,這不是golang模板的工作方式。

解決方案取決於數據的內部表示。如果它表示爲嵌套地圖,則解決方案是使用管道全局函數index

{{ index .Values.config .Values.env `myname` }} 

有關pipelines的更多信息。

有關global template functions的更多信息。

+1

嘿!好的答案,但也將工作,而不會像以前那樣分配變量: {{index .Values.config .Values.env'myname'}} –

+1

@IdirOuhabMeskine您是對的,而且這個更短,所以我編輯了我的答案。 –