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

Ansible: Change value in template based on deployment

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

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

我正在尝试设置优先级:

到目前为止,我的 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 %}
    }
}

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

priority {{ play_hosts.index(inventory_hostname) }}

或者您可以像这样在清单文件中预先指定优先级作为主机变量:

server1 vrrp_priority=100
server2 vrrp_priority=150

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

priority {{ vrrp_priority }}