如何在Ansible中提取主机组列表的最后两个元素?
Ansible 提取主机组最后两个成员的方法
直接利用Python列表的负索引切片就能解决这个问题,不用关心主机组的长度(只要满足你说的至少3个元素的前提)。
把原来的groups['server'][1:3]改成groups['server'][-2:]即可:
- name: 设置负载均衡主机变量 set_fact: loadbalancer_hosts: "{{ groups['server'][-2:] }}"
原理说明
- 列表的负索引从末尾开始计数:
-1代表最后一个元素,-2代表倒数第二个元素 - 切片
[-2:]表示从倒数第二个元素开始,一直取到列表最后一个元素,不管列表总长度如何,都会自动获取最新的最后两个成员
比如你的主机组server新增chaos后,这个切片会自动返回cerus和chaos,完全符合需求。
内容的提问来源于stack exchange,提问作者Floren
相关产品推荐
相关产品推荐

