Ansible列表转值自增字典时提示start变量未定义如何解决
错误原因
Ansible 单个任务内不支持重复声明vars字段,后声明的vars会直接覆盖前一个vars的所有内容,你第二个vars块中没有定义start变量,因此在计算_serial时会提示start未定义。此外你代码中range生成的是原生序列对象,建议显式转为列表避免后续使用时出现偶发格式问题。
修复方案
把所有变量统一放在同一个vars块中即可,正确代码如下:
- name: 转换列表为递增数值字典 vars: start: 100 _len: "{{ list_info|length }}" _serial: "{{ range(start, start + _len|int)|list }}" set_fact: dict_info: "{{ dict(list_info|zip(_serial)) }}"
执行后生成的dict_info结果为{"config1": 100, "config2": 101},符合需求。
内容的提问来源于stack exchange,提问作者mariiz444
相关产品推荐
相关产品推荐

