使用库存组的Ansible模板变量

时间:2014-10-29 11:05:47

标签: deployment ansible

我正在尝试为repcached memcached创建一个模板。 这包含一行如下

OPTIONS="-x 192.168.XXX.XXX -X 11212"

其中192.168.XXX.XXX是清单组中的2个条目之一。

基本上在2节点设置中,需要将节点配置为指向其库存组中的其他节点。

我一直在努力尝试使用jinja2模板(inventory_group - inventory_host),因为这会给我所需的值,但我似乎无法找到有效的语法。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用列表可能会让你走得很远。我不确定这是正确的方法。值得注意的是,-运算符并未从列表中删除项目(有趣的是,+可以连接列表,从而将项目添加到列表中)。

这就是说,我建议你在你的模板中照顾这个,就像这样(假设这个组叫做repcached):

{% for h in groups['repcached'] -%}
{% if h != inventory_hostname %}
OPTIONS="-x {{ hostvars[h]['ansible_default_ipv4']['address'] }}  -X 11212"
{% endif %}
{% endfor %}

如果您想从其他来源获取IP地址,可能需要调整['ansible_default_ipv4']['address']部分(请参阅ansible repcached -m setup输出以查看可用选项)。

当然,这只适用于repcached组中只有两台服务器的情况。如果组中的项目数不是2,您可以通过在游戏手册中拯救来添加安全措施。