2017-05-30 74 views
0

我有以下變量定義:列表中的Jinja2模板列表

datasources: 
    - { name: 'dsname', target: ['server1', 'server2'] } 

運行以下劇本:

--- 
- name: Create file 
    template: src="datasource.py" dest="/tmp/datasource.py" 

的神社模板我試圖從建立如下:

{% for ds_target in datasources.target 
%} Target:{{ ds_target }} {% 
endfor %} 

我該如何做模板以獲得以下輸出?

Target:server1 Target:server2

任何提示將高度讚賞

+0

'target:'server1,'server2'' this syntax is invalid - please fix quotes。 –

+0

謝謝你的擡頭。 我需要幫助如何使它工作,我需要在列表中的列表在for循環中解析。 –

回答

0

我添加了另一個迴路打開名冊「目標」,所以我的代碼看起來是這樣的:

{% for datasource in datasources 
%} {% for dst in datasource.target %}Target:{{ dst }} {% endfor %}{% endfor %} 

非常感謝你們!

0

當然,你需要循環datasources本身,然後在每次迭代訪問target

{% for ds in datasources %} Target:{{ ds.target }} {% endfor %} 
+0

對不起,我犯了一個錯誤,datasources.target變量被修正爲上面的「target:'server1,'server2'' –

+0

我想循環」datasources.target「,例如。對於列表中的每個服務器「目標」 –

0

如果你的問題是「我應該怎麼界定我的target列表,使我的模板工作?「,那麼答案是:

datasources: 
    - name: dsname 
    target: 
     - server1 
     - server2 

或其他記號:

datasources: 
    - { name: 'dsname', target: ['server1', 'server2'] } 
+0

我也試過這個,這樣做有如下的輸出: 目標:[u'server1,server2'] –

+0

@VeselinHristov如果你有這個輸出,你的報價不正確。請複製/粘貼我的答案。請注意,第一個表示法沒有引號,所以不太容易出現這種錯誤。 –

+0

你是對的@KonstantiSuvorov,目標var應該是:['server1','server2'] –