Ansible:根据部署更改模板中的值

时间:2016-08-22 13:53:29

标签: python templates ansible jinja2

部署基础上的变更值是否可以使用ansible?我在两台机器上配置keepalived,我想为优先级添加一个循环。

我无法循环或使用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 %}
    }
}

1 个答案:

答案 0 :(得分:2)

您可以在模板中使用主机索引(如果您不关心谁将获得更高的优先级):

priority {{ play_hosts.index(inventory_hostname) }}

或者您可以在库存文件中预先指定优先级作为主变量,如下所示:

server1 vrrp_priority=100
server2 vrrp_priority=150

...然后在模板中使用它:

priority {{ vrrp_priority }}