我正在使用salt 2015.8.1(Beryllium)并使用SaltStacks文档,启用haproxy.cfg autogenertion。但是我希望在配置文件中有A侧和B侧布局。我试图使用以下方法完成此任务:
...
// where x is 10.00 and y is 10.25
...
unsigned char carryOver = 0;
int totalLen = x._numbers.size();
for (size_t i = totalLen; i > 1 ; --i )
{
unsigned char sum = x._numbers[i-1] + y._numbers[i-1] + carryOver;
carryOver = 0;
if (sum > _base)
{
sum -= _base;
carryOver = 1;
}
numbers.insert( number.begin(), sum);
}
// any left over?
if (carryOver > 0)
{
numbers.insert( number.begin(), 1 );
}
// decimal pos is the same for this number as x and y
...
问题是,虽然这确实运行并完成但实际上并没有生成任何东西。我环顾四周并在IRC询问,但能够找到一个可靠的解决方案。如果有人能指出我正确的方向,我会永远感激。完整的haproxy.cfg可以在这个要点中找到:
https://gist.github.com/beardedeagle/8b19a34f332ed26ac859
此处的文件可以在这里找到:
https://docs.saltstack.com/en/latest/topics/mine/
再次,先谢谢。
*编辑* 我想声明我有以下工作没有问题,因此我的数据正在拉动应有的方式:
# Side A
{% for server, addrs in salt['mine.get']('roles:docker', 'network.ip_addrs', expr_form='grain').items() %}
{% if '*web1*' in server %}
server {{ server }} {{ addrs[0] }}:443 check inter 2000 rise 2 fall 5
{% endif %}
{% endfor %}
# Side B
{% for server, addrs in salt['mine.get']('roles:docker', 'network.ip_addrs', expr_form='grain').items() %}
{% if '*web2*' in server %}
server {{ server }} {{ addrs[0] }}:443 check inter 2000 rise 2 fall 5
{% endif %}
{% endfor %}
答案 0 :(得分:1)
您可以在循环中使用compound matching,因此如果您没有其他特定粒度来分隔web1 / web2,您可以尝试
{% for server, addrs in salt['mine.get']('G@roles:docker' and L@web1*.domain.com', 'network.ip_addrs', expr_form='compound').items() %}
server {{ server }} {{ addrs[0] }}:443 check inter 2000 rise 2 fall 5
{% endfor %}
同样适用于web2。