2016-08-22 49 views
1

是否有可能在部署的基础上更改值,而且是否有可能?我在两台机器上配置keepalived,我想为优先级添加一个循环。Ansible:根据部署更改模板中的值

我无法循环或使用range()函数,因为它只是在相同的部署中循环。

我想设置优先级:

  • LB1 = 100
  • LB2 = 101

我的VRRP实例看起来像这样至今:

vrrp_instance VI_1 { 
    state MASTER 
    interface {{ int }} 
    virtual_router_id 51 
    priority 100 <------------------- I'd like to iterate this value 
    advert_int 1 
    authentication { 
     auth_type PASS 
     auth_pass 1111 
    } 
    virtual_ipaddress { 
     # supports up to 20 by default 
     {% for ip in vips %} 
      {{ ip.addr }} 
     {% endfor %} 
    } 
} 

回答

2

你可以像这样在你的模板中使用主机索引(如果你不关心谁会得到更高的优先级):

priority {{ play_hosts.index(inventory_hostname) }} 

或者你可以指定提前优先事项主机变量在您的清单文件是这样的:

server1 vrrp_priority=100 
server2 vrrp_priority=150 

...然后使用您的模板中:

priority {{ vrrp_priority }} 
+0

uuuuuugh host_vars我觉得自己像个白痴。当然,这很干净。谢谢 –