如何基于索引筛选列表?按指定集群大小截取前N个元素
实现方法
如果是在Ansible里处理这个需求,直接用列表切片就能搞定:
desired_list: "{{ total_list[:desired_cluster_size] }}"
完整示例
把这段逻辑放到Playbook里的效果:
- hosts: localhost vars: total_list: [ node1, node2, node5 ] desired_cluster_size: 2 tasks: - set_fact: desired_list: "{{ total_list[:desired_cluster_size] }}" - debug: var: desired_list
执行后desired_list就会是['node1', 'node2'],完全符合你的要求。
补充说明
这种切片是Python风格的,list[:N]会取出列表的前N个元素。如果desired_cluster_size的值大于total_list的长度,切片会自动返回整个列表,不会抛出错误。
要是你是在纯YAML环境下(不依赖Ansible这类工具),大部分原生YAML处理器不支持这种动态操作,建议用支持列表操作的脚本或配置管理工具来实现,上面的Ansible方案是最常用的解决方式。
内容的提问来源于stack exchange,提问作者Palaniyappan PL
相关产品推荐
相关产品推荐

