2017-05-09 64 views
0

我想添加一個獲取minion主機名的mine函數。在saltstack中遇到自定義mine_functions的問題

pillar/custom.sls

mine_functions: 
    custom: 
    - mine_function: grains.get 
    - nodename 

我手動通過運行 salt '*' saltutil.refresh_pillar

和運行salt '*' mine.get '*' custom當如預期的輸出,顯示出所有與下方的節點名數據爪牙的列表刷新支柱數據。

的問題是,當我嘗試做thew在模板文件如下:

{%- set custom_nodes = [] %} 
bootstrap.servers={% for host, custom in salt['mine.get']('role:foo', 'custom', expr_form='grain').items() %} 
    {% do hosts.append(custom + ':2181') %} 
{% endfor %}{{ custom_nodes|join(',') }} 

我剛剛得到一個空的空間,我的服務器節點名的名單應該是。

我希望有人能夠指出我會在哪裏出錯?

回答

0

也能正常工作對我來說:

pillar/custom.sls

mine_functions: 
    id_list: 
    mine_function: grains.get 
    key : nodename 

templete.sls

{% for server in salt['mine.get']('*', 'id_list') | dictsort() %} 
server {{ server }} {{ addrs[0] }}:80 check 
{% endfor %} 
0

其實答案是很簡單的。我不知道在他們能夠訪問地雷數據之前需要重新啓動現有的部隊。

3

它看起來像你追加列表hosts,但隨後使用custom_nodes加入?

這是故意的?

我想你真正想要的是

{%- set custom_nodes = [] %} 
bootstrap.servers={% for host, custom in salt['mine.get']('role:foo', 'custom', expr_form='grain').items() %} 
    {% do custom_nodes.append(custom + ':2181') %} 
{% endfor %}{{ custom_nodes|join(',') }} 
相關問題